socket.io,server在客户端为该事件设置监听器之前发出事件

时间:2015-08-08 18:47:07

标签: javascript node.js socket.io

在下面的代码片段中(使用node.js和socket.io库),有时(有时不是)服务器在客户端为{设置套接字侦听器“之前发出事件something {1}}事件将导致相关的匿名函数无法执行。

客户端:index.html

something

test.js的内容

<script src="socket.io/socket.io.js"></script>
<script>
   ...
   var socket = io.connect('http://localhost:8080/abc');
   ...
</script>
<script src="/somewhere/test.js"></script>

服务器侧

...
console.log(new Date().getTime(), 'debugging');

socket.on('something', function(data) {
// will not execute
console.log(data);
});
...

客户端的console.log结果:io.of('/abc').on('connection', function(socket) { console.log(new Date().getTime(), 'EMIT SOMETHING'); io.of('/abc').emit('something', 'b'); });
服务器端console.log的结果:1439057954676 debugging

为什么服务器在客户端设置监听器之前发出事件?

1 个答案:

答案 0 :(得分:0)

尝试将 var socket = io.connect('http://localhost:8080/abc'); socket.on('something',function(data)放入相同的脚本标记。
(基本上尝试将整个脚本放在一个HTML元素中,而不是将它们分开。)