Socket イベント

概要

クライアントが Socket 接続を確立して認証を通過した後(Socket 接続 を参照)、サーバーがプッシュするリアルタイムイベントを受信できます。本ページでは、すべてのイベントタイプとその payload 形式を一覧し、ネイティブアプリ / Web クライアントが解析する際の参考としてご利用いただけます。


イベント一覧

イベント名トリガータイミング用途
chat messageチャットルームで新しいメッセージを受信したときメッセージのリアルタイム表示、ローカル通知のトリガー
roomチャットルームの属性が更新されたとき(メンバー、設定など)チャットルーム一覧、メンバー一覧の更新
lastReadあるメンバーが最終既読を更新したとき既読確認 UI の更新
typingあるメンバーが入力中のとき「相手が入力中…」を表示
ai_streamingAI メッセージが分割ストリーミングで返ってくるときAI 生成内容の段階的な表示
roomPrefユーザー自身が特定チャットルームの設定を更新したときデバイス間でチャットルーム設定を同期
myPrefChangeユーザー自身が個人設定を更新したときデバイス間で個人設定を同期
myPrefDeleteユーザー自身が特定の設定を削除したときデバイス間で同期
invitationグループ招待を受信したとき招待通知の表示
userDeleteMessagesユーザーが自分でメッセージを削除したとき(自分のみに非表示)UI からメッセージを削除
messageDeleted管理者(super-user)がメッセージを完全に削除したとき全メンバーの UI からメッセージを削除

chat message

チャットルームに新しいメッセージが届いたときにトリガーされます。

フィールド内容
DataMessage オブジェクト

payload 例

{
  "_id": "5c1ddf2d1536bbb6c49f7cfe",
  "message": "Bonjour 2",
  "room": "demo-room",
  "sender": {
    "_id": "sss",
    "nickname": "Desirae",
    "isRobot": false,
    "avatarUrl": "",
    "id": "sss"
  },
  "messageType": "text",
  "appID": "SampleApp",
  "messageTime": "2018-12-22T06:52:29.380Z",
  "messageTimeMS": 1545461549380,
  "id": "5c1ddf2d1536bbb6c49f7cfe"
}

room

チャットルームの属性(メンバー、名称、設定など)に更新があったときにトリガーされます。

フィールド内容
Data更新後のチャットルームオブジェクト

lastRead

あるチャットルームメンバーが PUT /rooms/:id/lastRead を呼び出して最終既読を更新した後、該当チャットルームの全メンバーにブロードキャストされます。

フィールド説明
roomIDチャットルーム ID
memberID既読を報告したメンバーの Client ID
messageIDそのメンバーの最終既読メッセージ ID

payload 例

{
  "roomID": "5be660651a71681534245a4e",
  "messageID": "5be7edaced649e42234f0699",
  "memberID": "aaa"
}

typing

あるメンバーが入力中のときにトリガーされ、通常は「相手が入力中…」の表示に使用します。

フィールド説明
roomチャットルーム ID
message入力中の内容(断片の可能性あり)

payload 例

{
  "room": "58871b877390be11d5f1ab30",
  "message": "typing content"
}

ai_streaming

AI からのストリーミングメッセージ断片を受信します。AI アシスタントのリアルタイム応答シナリオに適しています。

フィールド説明
roomチャットルーム ID
senderAI Client ID
textメッセージ断片の内容

payload 例

{
  "room": "<RoomID>",
  "sender": "<ClientID>",
  "text": "<Message chunk content>"
}

roomPref

現在のユーザーがあるデバイスで特定チャットルームの設定(ミュート、ピン留め、非表示など)を更新した際、そのユーザーの他の接続デバイスにブロードキャストされます。

フィールド説明
Data更新後のチャットルーム設定オブジェクト

payload 例

{
  "room": "demo-room",
  "folder": "Some-Folder",
  "hidden": false,
  "muted": false,
  "sticky": false,
  "tags": ["demo", "sample"]
}

myPrefChange

現在のユーザーがあるデバイスで個人設定を更新した際、そのユーザーの他の接続デバイスにブロードキャストされます。

フィールド説明
Datadatakey の 2 フィールドを含む

payload 例

{
  "data": {
    "foo": "bar",
    "folders": {
      "folder 1": { "rooms": ["aaabbb", "cccddd"] }
    }
  },
  "key": "demokey"
}

myPrefDelete

現在のユーザーが個人設定の項目を削除したときにトリガーされます。

フィールド説明
Data削除された設定キー

payload 例

"demokey"

invitation

グループ招待を受信したときにトリガーされます。

フィールド説明
Data招待オブジェクト

userDeleteMessages

ユーザーが自分でメッセージを削除した(自分のみに非表示)ときにトリガーされます。

フィールド説明
roomチャットルーム ID
messages削除されたメッセージ ID の配列
isUserDeleteAllMessagesInRoom「チャットルーム内の全メッセージを削除」かどうか(boolean)

payload 例

{
  "room": "demo-FpOtW6",
  "messages": ["64623ad9f83f7f1a35009d6b"],
  "isUserDeleteAllMessagesInRoom": true
}

messageDeleted

管理者(super-user)があるメッセージを完全に削除したときにトリガーされ、全チャットルームメンバーが受信します。

フィールド説明
roomチャットルーム ID
messageID削除されたメッセージ ID。_all の場合は、チャットルーム内の全メッセージが完全に削除されたことを示します

注意事項

  • イベント名にスペースを含む:chat message はスペースを含むイベント名です。購読時は完全な文字列を入力してください
  • payload のデコード:接続時に encoding: "base64" を有効化している場合、すべてのイベント payload は base64 デコードしてから JSON.parse する必要があります
  • オンライン時のみ受信:これらのイベントは socket 接続中のみ受信できます。アプリがバックグラウンドまたはオフラインのときに見逃したイベントは、POST /push/push2clientsWebhook、または再接続後にメッセージ一覧を取得することで補完する必要があります
  • メッセージ送信元の判別:chat messagesender._id が自分と一致する場合、自分の別デバイスから送信したメッセージであることを示しますが、UI 上には引き続き表示すべきです
  • プッシュとの併用:モバイルアプリは socket(フォアグラウンド)+ APNs/FCM プッシュ(バックグラウンド)を併用し、メッセージの取りこぼしを防いでください
  • 冪等処理:再接続時にすでに処理済みのイベントを再受信する可能性があります。クライアントは _id をキーに重複排除を行ってください
© 2026 FUNTEK Software Inc. All rights reserved.