我在node.js 0.8.8上使用socket.io v9,最新的Chrome作为客户端。
我看到了一个非常奇怪的行为,我昨天花了大部分时间将Indie Game Jam缩小范围。
问题出现在这部分服务器代码中:
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'以及之后的所有消息都会很好。< / p>
因此,好像名为“next_round”的消息会堵塞socket.io的服务器端阴谋。请注意,节点/套接字端的调试输出不会显示正在写入套接字的next_round消息,但它确实显示正在写入套接字的nnnn_round消息。
是否有任何文档可以解释这种行为?我在socket.io上找不到任何东西(无论如何都没有太多的文档),并且在socketio模块源代码中为“next_round”的grepping出现了emtpy。