Socket.broadcast也呼叫发送者

时间:2019-03-24 12:54:19

标签: node.js sockets

我使用套接字在鼠标事件上发送坐标。一切正常,但是socket.broadcast也会触发发送方。我认为socket.broadcast也不应该自称,但是在某种程度上它会发生在这里。

这是我的客户端发出的信息

ball.onmousedown = function(event) {
    var coords = [event.pageX, event.pageY];
    socket.emit('ballMouseDown', coords);
}

我的服务器端,这里一切正常

socket.on('ballMouseDown', function (coords) {
    socket.broadcast.emit('ballMouseDown', coords);
});

又是我的客户端

[编辑] 以下代码片段位于单独的公共JS文件中。如果我将其放在index.html文件中,则广播效果很好。

socket.on('ballMouseDown', function(coords){
    // fired in the sender's console too
    console.log(coords);
})

coords会按预期出现在其他用户控制台中,但它也位于发件人的控制台中,并由socket.on侦听器中的同一行触发。

我在那些文件中有一个消息事件,是在客户端用表单提交按钮触发的,在这里socket.broadcast可以正常工作。鼠标事件可能是问题所在,但我尚未找到与此有关的任何内容。

1 个答案:

答案 0 :(得分:0)

我发现了问题。它不是单独的文件,而是我所说的方式。如果将<script src="js/draganddrop.js"></script>放在index.html文件的末尾,它将按预期工作。我认为这与加载时间有关,因为在文件之前不需要调用任何东西。

所以这解决了我的问题。希望对别人有帮助。