我使用套接字在鼠标事件上发送坐标。一切正常,但是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可以正常工作。鼠标事件可能是问题所在,但我尚未找到与此有关的任何内容。
答案 0 :(得分:0)
我发现了问题。它不是单独的文件,而是我所说的方式。如果将<script src="js/draganddrop.js"></script>
放在index.html文件的末尾,它将按预期工作。我认为这与加载时间有关,因为在文件之前不需要调用任何东西。
所以这解决了我的问题。希望对别人有帮助。