注意:当我删除" node_modules \ uws \ uws_win32_59.node"它工作正常。 uws由engine.io使用,由socket.io使用。
我写了一个非常基本的应用来演示这个问题。在下面的应用程序中,在chrome中打开index.html的2个选项卡,单击"发出"从客户端发出消息,但需要花费大量不同的时间才能到达服务器。从2-15 +秒到任何地方。如果我只打开1个index.html页面,它可以正常工作,但是一旦打开第二个页面,我就会遇到问题。如果我删除上面的uws_win32_59.node,它可以正常使用多个连接。
server.js :
var io = require('socket.io')();
io.on('connection', function(socket){
console.log('connection made');
socket.on('number', function(num) {
console.log(num + ' received on server');
io.emit('number', num);
console.log(num + ' emitted from server');
});
});
io.listen(9001);
的index.html :
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.0.4/socket.io.js"></script>
</head>
<body>
<button id="emit">emit</button>
<p id="nums"></p>
<script>
var socket = io('http://localhost:9001');
socket.on('number', function(num){
console.log(num + ' received on client');
document.getElementById('nums').innerHTML = num;
});
var num = 0;
document.getElementById('emit').addEventListener('click', function(){
num++;
socket.emit('number', num);
console.log(num + ' emitted from client');
});
</script>
</body>
</html>
默认&#34; npm install socket.io&#34;安装上面提到的uws模块,它本身由engine.io使用。
运行&#34;节点服务器&#34;并打开index.html的2个实例,然后单击emit并注意浏览器开发人员工具控制台日志记录和节点服务器控制台日志记录以重新创建问题。
编辑:看起来在Windows操作系统上有一个未解决的问题:https://github.com/socketio/socket.io/issues/3100
答案 0 :(得分:0)
也许你需要npm install socket.io@1.7.4。我认为版本2.0明显更慢