本文へスキップ

ユースケース

リアルタイムチャット

チャットルームは presence チャンネルです。メンバーシップはチャンネルから得られるもので、あなたが同期し続けるテーブルからではありません。メッセージはイベントであり、入力中の表示はあなたのサーバーに触れることすらありません。

presence-room-42
  • presence チャンネル
  • イベント
  • クライアントイベント
  • webhook

どう動くか

  1. 01認可するこのユーザーが参加してよいかをサーバーが判断し、そのメンバー id を返します。
  2. 02メンバーを描画するサブスクリプションがメンバー一覧を返し、参加と離脱のイベントがそれを最新に保ちます。
  3. 03メッセージを送るサーバーが保存し認可したうえで、イベントとして publish されます。
  4. 04入力中の表示クライアントイベントとしてサブスクライバーの間で送られます。一時的なもので、往復は発生しません。

知っておきたいこと

履歴はデータベースの仕事であって、チャンネルの仕事ではありません。参加したクライアントが受け取るのはそれ以降のものです。過去の分は HTTP で読み込んでください。

コードで見る

room.js
js
const room = pusher.subscribe('presence-room-42')room.bind('pusher:subscription_succeeded', (members) => {  renderMemberList(members)})room.bind('pusher:member_added', (m) => addMember(m))room.bind('pusher:member_removed', (m) => removeMember(m))room.bind('message', (msg) => appendMessage(msg))// Ephemeral, straight between subscribers.input.oninput = () => room.trigger('client-typing', { at: Date.now() })

公式の Pusher ライブラリを、手を加えずに使って書いています。インストールする PushCaster 製のパッケージはありません。 ドキュメント全文

ほかにこんなものが作られています

すべてのユースケース
private-user-1e9

通知

サーバーの 1 つのイベントが、ユーザーが開いているすべての面に届きます。

アプリケーションを作って、これを作りましょう。

Support