Skip to content

nodejs

現在Concrntにはnodeのライブラリが存在しています。webクライアント実装であるconcrnt.worldもこのライブラリを利用して開発されているので、webクライアントでできるような投稿、購読、リアルタイムイベントの受信など、全ての機能をこのライブラリ経由で利用することができます。

ライブラリのインストール

Terminal window
pnpm i @concrnt/client @concrnt/worldlib

でライブラリをインストールすることができます。

Examples

ほかに欲しい例があれば、是非GitHubのリポジトリにIssueを立ててください。

投稿する

サブキーの持ち主のアカウントで、ホームタイムラインとarrival_loungeタイムラインに投稿する例です。

import { Client } from '@concrnt/worldlib'
const arrival_lounge = '[email protected]'
const body = 'はろはろ'
const subkey = "concurrent-subkey xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx [email protected] totegamma"
const client = await Client.createFromSubkey(subkey)
await client.createMarkdownCrnt(
body,
[client.user.homeTimeline, arrival_lounge],
);

リアルタイムで投稿を受信する

サブキーの持ち主のアカウントの、ホームタイムラインに投稿されたメッセージをリアルタイムで受信する例です。

import { Client } from '@concrnt/worldlib'
const subkey = "concurrent-subkey xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx [email protected] totegamma"
const client = await Client.createFromSubkey(subkey)
const subscription = await client.newSubscription()
subscription.on('MessageCreated', (message) => {
console.log(message)
})
subscription.listen([client.user.homeTimeline])

すると、次のようなデータが降ってきます。

{
timeline: 'world.concrnt.t-home@con1t0tey8uxhkqkd4wcp4hd4jedt7f0vfhk29xdd2',
item: {
resourceID: 'msn6mfn3xyp2g5ss00683ha87hm',
timelineID: 'tv2zwpcdbz7m8tc6j067v1wnwtc',
owner: 'con1t0tey8uxhkqkd4wcp4hd4jedt7f0vfhk29xdd2',
cdate: '2024-06-21T02:38:40.013Z'
},
document: {
signer: 'con1t0tey8uxhkqkd4wcp4hd4jedt7f0vfhk29xdd2',
type: 'message',
schema: 'https://schema.concrnt.world/m/markdown.json',
body: {
body: '雨の中おべんと買いにいくか否か',
emojis: {},
mentions: [],
profileOverride: {}
},
meta: { client: 'concrnt.world-concrnt-a01e35d' },
timelines: [
'world.concrnt.t-home@con1t0tey8uxhkqkd4wcp4hd4jedt7f0vfhk29xdd2'
],
signedAt: '2024-06-21T02:38:40.013Z',
keyID: 'cck1x9ee0xf4s7qrjze4n85malrdkreqtujfzq8jqv'
},
_document: '{"signer":"con1t0tey8uxhkqkd4wcp4hd4jedt7f0vfhk29xdd2","type":"message","schema":"https://schema.concrnt.world/m/markdown.json","body":{"body":"雨の中おべんと買いにいくか否か","emojis":{},"mentions":[],"profileOverride":{}},"meta":{"client":"concrnt.world-concrnt-a01e35d"},"timelines":["[email protected]","world.concrnt.t-home@con1t0tey8uxhkqkd4wcp4hd4jedt7f0vfhk29xdd2"],"signedAt":"2024-06-21T02:38:40.013Z","keyID":"cck1x9ee0xf4s7qrjze4n85malrdkreqtujfzq8jqv"}',
signature: 'f97895a336debbd3ac2b5602856d37dcb8f0950cb27e735047534d45a83738005c31a5c44afe3ff9270726d6cbd31758a2e94cdb73a4e1ad9205fa568c30646501',
resource: undefined
}