在客户端:
<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 :(得分:1)
这是因为io.connection(...)
async ,并且在调用callInit
函数时套接字可能没有连接。
您可能希望在浏览器端套接字连接中添加on('connect', ....)
,并在on('error', ...)
添加{{1}}以检查连接和错误