node.js0.8.8でsocket.iov9を使用しており、最新のChromeをクライアントとして使用しています。
私は本当に奇妙な振る舞いを見ています、そしてそれを絞り込むために昨日インディーゲームジャムのほとんどを要しました。
サーバーコードのこの部分で問題が発生します。
this.msg('message', {message:'beta'});
this.msg('next_round', {players: this.make_player_list()});
this.msg('message', {message:'zeta'});
「this.msg」は、ソケットのリストをループし、それらに対してsocket.emit()を呼び出すためのラッパーです。
このコードの前後にもメッセージが送信されます。
クライアントには、「メッセージ」/「ベータ」メッセージまでのすべてのメッセージが表示されます。'next_round'メッセージ、およびその後の同じソケット上のメッセージは、クライアントには表示されません。
ここで奇妙なことがあります。メッセージの名前を「nnnn_round」に変更すると(そしてクライアントのメッセージハンドラフックアップを更新すると)、「nnnn_round」とそれ以降のすべてのメッセージは正常に処理されます。
したがって、「next_round」という名前のメッセージがsocket.ioのサーバー側の策略を妨害するように見えます。ノード/ソケット側のデバッグ出力には、ソケットに書き込まれているnext_roundメッセージは表示されませんが、ソケットに書き込まれているnnnn_roundメッセージは表示されることに注意してください。
この動作を説明できるドキュメントはありますか?socket.io(とにかく多くのドキュメントがありません)で何も見つかりません。socketioモジュールソースで「next_round」をgrepするとemtpyが表示されます。