ScrapboxのWebSocket内の通信
https://gyazo.com/aa4023a559de2291afdc5a9d3bcd0814
ScrapboxのWebSocketの通信を覗いてみたら、頭に番号がついていた
一番左の桁はEngine.IOのパケット種別を表している
詳細:socketio/engine.io-protocol
次の桁はSocket.IOのパケット種別を表している
詳細:socketio/socket.io-protocol: Socket.IO Protocol specification
それ以降の数字は0からの通し番号
例えば、4311なら、43と頭につくパケットの内11番目のパケットという意味になる
この通し番号は、クライアントとサーバーの対話時に用いられる
4211に対しては4311が返ってくるといった具合に、通し番号が対応している
見つけたやつを片っ端から書いているだけなので、網羅はしていない
ここのリンクに使われている名称はどれも非公式なので注意
サーバー側から送信されるデータ
サーバー側から受信したデータの番号
0: "open" (Engine.IO)
接続開始|Scrapbox-WS
接続を維持するにあたって必要な情報を送信する
2: "ping" (Engine.IO)
ping|Scrapbox-WS
接続維持のための通信
定期的に送られてくる
4: "message" (Engine.IO)
0: "CONNECT" (Socket.IO)
ソケットID発行|Scrapbox-WS
ソケットID要求|Scrapbox-WSにて要求されたsidを送信する
2: "EVENT" (Socket.IO)
カーソル更新|Scrapbox-WS
他のユーザーのユーザーフラッグに関する情報を取得する
コミット通知|Scrapbox-WS
ページ内の更新に関する情報
3: "ACK" (Socket.IO)
クライアントからのEVENTに対する応答
更新通知要求に対する応答|Scrapbox-WS
更新のリアルタイム受信|Scrapbox-WSに対する応答
ページコミット完了通知|Scrapbox-WS
ページコミット送信|Scrapbox-WSに対する応答
コミットIDが返される
クライアント側から送信されるデータ
クライアント側から送信したデータの番号
3: "pong" (Engine.IO)
pong|Scrapbox-WS
サーバー側からping|Scrapbox-WSが送信された直後に送信される
接続を維持するためには、定期的にこのパケットを送らなければならない
4: "message" (Engine.IO)
0: "CONNECT" (Socket.IO)
ソケットID要求|Scrapbox-WS
ソケットID発行|Scrapbox-WSを要求する
2: "EVENT" (Socket.IO)
ページ更新の受信停止|Scrapbox-WS
更新のリアルタイム受信|Scrapbox-WSで要求したページ更新の購読を停止する
カーソル移動|Scrapbox-WS
カーソル(キャレット)の位置をサーバーに送信する
通し番号付きのパケット
このパケットを送信すると、サーバー側から必ず応答が返ってくる
更新のリアルタイム受信|Scrapbox-WS
多分ページやプロジェクト全体の更新を受け取るための要求
ページコミット送信|Scrapbox-WS
ページを更新する
行の作成や削除もできる
ピン留めやページ削除もできる