У меня странные проблемы с socket.io и современными браузерами. Удивительно, но с IE9 работает нормально, потому что откат к flashsocket работает лучше.
На моем сервере (с экспрессом)
var io = socketio.listen(server.listen(8080));
io.configure('production', function(){
console.log("Server in production mode");
io.enable('browser client minification'); // send minified client
io.enable('browser client etag'); // apply etag caching logic based on version number
io.enable('browser client gzip'); // gzip the file
io.set('log level', 1); // reduce logging
io.set('transports', [ // enable all transports (optional if you want flashsocket)
'websocket'
, 'flashsocket'
, 'htmlfile'
, 'xhr-polling'
, 'jsonp-polling'
]);
});
В браузере я вижу на вкладке «Сеть» (в Chrome ), что веб-сокет установлен и входит 101 Switching Protocols
в режим ожидания. После этого появляется xhr -polling и jsonp -polling (что случилось с flashsocket ?)
Хуже всего то, что информация не ходит туда-сюда. У меня это на связи:
io.sockets.on('connection', function (socket) {
// If someone new comes, it will notified of the current status of the application
console.log('Someone connected');
app.sendCurrentStatus(socket.id);
io.sockets.emit('currentStatus', {'connected': true);
});
И на клиенте:
socket.on('currentStatus', function (data){ console.log(data) });
Однако я могу видеть этот журнал только тогда, когда я выключаю сервер , который запускается с:
NODE_ENV=production node server.js
Что я делаю не так?