socket.io 1.4系で 4undefined (追記あり)


socket.ioを最新 (1.4系)にアップデートすると、emitの動きがおかしいというか、Clientで受け取れない事がありました。

こういうのは大丈夫だけど、


io.on("connection", function(socket) {
socket.emit("OK");

roomのsubscriberにbroadcastしようとすると、client側で受け取れない。


io.on("connection", function(socket) {
// socket.toでも同様
socket.in('myroom').emit('message', 'hello world');

正確に言うと受け取れないんじゃなくて、受け取ったデータがおかしい。
ChromeでWSをキャプチャすると、client側にとこういうのは届いている。


4undefined

ワークアラウンドとしては、socket.io を 1.3系にダウングレードすること。

io.emit causes 4undefined frame – Issue #2590 – socketio/socket.io – GitHub

昨今はsocket.io の 1.3系のビルドに手こずるから凄い嫌なんだけど、該当コードを全て修正する事も現実的で無い場合は仕方が無い感じ。

2016-10-18追記
socket.io 1.5.0で治りました。良かった。

https://github.com/socketio/socket.io/issues/2590