こんにちは、渕上です。
このブログの為にNode.js + Socket.io を使って疑似ビデオチャットを書いていたのですが、
socket接続中に「socketのidが変わってしまう」という現象が起こりました。
ブログのためだけのコードなので、大きな実害がなければいいかなーくらいに考えていたのですが(よくない)
残念ながら実害がありました。かなり大きな。
Socket.ioのルーム機能を使って下記のような実装を行っていたため、
socketのidが変わってしまうと、入室中のルームを特定することができなくなりました。弱った。
- 初回のsocket接続時にsocket.idをルームにjoin(入室)させる
- 同時にsocket.idとルーム名を関連付けるObjectを作成
- 以降の通信ではsocket.idから現在入室しているルームを特定
まあでも、弱っていても仕方がない。
バグと喧嘩は江戸の華、転んでもただでは起きない精神で、
この問題の調査過程を今回の記事にしてみたいと思います!
最近のコメント