presence-room-42
リアルタイムチャット
presence チャンネル上のルーム、メンバーシップ、入力中の表示。
ユースケース
同じものを二人で編集していると、絶えず 3 つの答えが要ります。他に誰がいるか、その人が今何をしたか、カーソルはどこか。presence とイベントとクライアントイベントが順にそれを答えます。
クライアントイベントはレート制限があり、保存もされません。カーソル向きであって、編集向きではありません。再読み込みしても残らねばならないものは、あなたのサーバーを通します。
const doc = pusher.subscribe('presence-doc-9f2')// Ephemeral: straight between editors, never persisted.canvas.onpointermove = throttle((e) => { doc.trigger('client-cursor', { x: e.clientX, y: e.clientY })}, 50)// Durable: your server persisted it, then published it.doc.bind('block-updated', (block) => applyBlock(block))公式の Pusher ライブラリを、手を加えずに使って書いています。インストールする PushCaster 製のパッケージはありません。 ドキュメント全文
presence チャンネル上のルーム、メンバーシップ、入力中の表示。
サーバーの 1 つのイベントが、ユーザーが開いているすべての面に届きます。
ポーリングで取りにいくのではなく、変わったそばから送る。