从客户端javascript函数调用socket.emit('init','data')不会执行。

时间:2013-08-23 14:51:50

标签: javascript socket.io

在客户端:

<a href='javascript:callInit();'> Get Init </a>

客户端html包含以下脚本:

<script src="/socket.io/socket.io.js"></script>
<script>var socket = io.connect('http://localhost:3000');
 function callInit(){
  alert('inside callInit');
  socket.emit('init', 'data');
}
</script>

在服务器端:

 io.sockets.on('connection', function(socket) {
console.log('socket connection established');
    socket.on('init', function(data){
    console.log('init invoked');
    init();
    });
 });

在上面的代码中:alert('inside callInit')执行。 console.log('socket connection established');执行。但console.log('init invoked);`不执行。

1 个答案:

答案 0 :(得分:1)

这是因为io.connection(...) async ,并且在调用callInit函数时套接字可能没有连接。

您可能希望在浏览器端套接字连接中添加on('connect', ....),并在on('error', ...)添加{{1}}以检查连接和错误