Node.js Socket.io无法发送到某些计算机上的客户端
使用以下简单的socket.io应用程序,我得到了非常奇怪的行为,但仅在我测试过的一些计算机上。在大多数计算机上,它似乎工作正常。这是我使用的设置: server.js:Node.js Socket.io无法发送到某些计算机上的客户端,node.js,websocket,socket.io,Node.js,Websocket,Socket.io,使用以下简单的socket.io应用程序,我得到了非常奇怪的行为,但仅在我测试过的一些计算机上。在大多数计算机上,它似乎工作正常。这是我使用的设置: server.js: var app = require('http').createServer(handler) , io = require('socket.io').listen(app) , fs = require('fs') app.listen(80); function handler (req, res) {
var app = require('http').createServer(handler)
, io = require('socket.io').listen(app)
, fs = require('fs')
app.listen(80);
function handler (req, res) {
fs.readFile(__dirname + '/index.html',
function (err, data) {
if (err) {
res.writeHead(500);
return res.end('Error loading index.html');
}
res.writeHead(200);
res.end(data);
});
}
io.sockets.on('connection', function (socket) {
i = 0;
setInterval(function() {
socket.emit('news', 'test');
}, 200);
socket.on('my other event', function (data) {
console.log(data);
});
});
index.html:
<html>
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io.connect();
socket.on('news', function (data) {;
console.log("test");
socket.emit('my other event', { my: 'data' });
});
</script>
</html>
<body></body>
var socket=io.connect();
socket.on('news',函数(数据){;
控制台日志(“测试”);
emit('my other event',{my:'data'});
});
如果我将间隔设置为30毫秒而不是200毫秒,它似乎工作得很好(即客户端和服务器都会按时接收套接字消息),但是当我将间隔设置为100毫秒或更多毫秒时,客户端不会响应前13个(因此为13个)由服务器发送的消息,然后突然同时接收所有13条消息,紧接着是以下错误:
“到'ws://example.com/socket.io/1/WebSocket/63zOWQ5mEuzV01WuqZ5X'的WebSocket连接失败:无法识别的帧操作码:11”
这种行为会重复一段时间,因此会突然收到一组13条消息,然后出现错误,但有时,在出现随机数量的错误集后,它会再次正常运行。我知道这听起来很奇怪,但我找不到这个问题的根源,它极大地影响了用户体验。什么会引发这个问题
我使用的是node.js版本0.8.24、socket.io版本0.9.14和chrome版本31.0.1650.63 m。我运行的是CentOS 6.5版。这种行为也发生在IE 10上,但有一个不同的错误:“SCRIPT12152:WebSocket错误:网络错误12152”在控制台[服务器端]上按节点显示任何错误或日志?不,服务器端似乎一切正常。“我的其他事件”事件也被正确接收(如果客户端接收到一批13个“新闻”事件,则以13个为一批)节点0.8非常旧,也许是时候更新到0.10了?我故意使用0.8。当我想将socket.io与节点http代理一起使用时,0.10会出现问题,请参阅这是否意味着您在客户端和服务器之间有一个代理?