2013-08-23 70 views
-1

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

<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);`不执行。

+0

什么? – Joseph

+0

@JosephtheDreamer是警报功能。就这样。 – Swagg

+0

控制台....不是浏览器窗口@Swagg – Neal

回答

1

这是因为io.connection(...)异步并且在调用callInit函数时可能未连接套接字。

你可能要添加一个on('connect', ....)到浏览器端套接字连接和on('error', ...)检查连接和错误浏览器的控制台上

+1

咦?请阅读文档.... – Neal

+0

http://socket.io/#how-to-use是文档。你怎么做sockets.on('连接')不在这里。另外还有 – Swagg

+0

。我手动调用了函数callInit,所以我可以管理时间间隔,以实现连接。所以可能有另一种解释 – Swagg

相关问题