Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 套接字被多次调用_Javascript_Ajax_Node.js_Sockets - Fatal编程技术网

Javascript 套接字被多次调用

Javascript 套接字被多次调用,javascript,ajax,node.js,sockets,Javascript,Ajax,Node.js,Sockets,我阅读了关于这个问题的其他问题,但没有找到解决问题的方法。例如,我看到可以移除监听器或将套接字代码移出click处理程序,但这似乎不适合我的问题 我使用的是sockets+ajax。我的代码逻辑如下: //client side button.onclick = function () {Communicate(info);return false;}; function Communicate(info) { // ajax call } // server side -> r

我阅读了关于这个问题的其他问题,但没有找到解决问题的方法。例如,我看到可以移除监听器或将套接字代码移出click处理程序,但这似乎不适合我的问题

我使用的是sockets+ajax。我的代码逻辑如下:

//client side
button.onclick = function () {Communicate(info);return false;};

function Communicate(info) {
   // ajax call
}

// server side -> receive ajax 
app.post("/...",function(req,res) {
    // do stuff (...)

    // send global socket call
    io.sockets.emit("GlobalCall",xx);

    // return ajax call to the user who triggered this
    res.send(...));

});

// client side again

socket.on("GlobalCall",function(x)) {
   // this is called twice sometimes for some reason... It should be called only once each time the server emits ...
}
正如我对代码的评论,服务器只发出一次,但“GlobalCall”有时会发生两次。
有什么帮助吗?谢谢

解决方案实际上与套接字无关。发生的事情与jquery动画有关,jquery动画为每个指定的属性执行两次。我不知道也没注意到。责怪插座是错误的。

问题出在哪里?错误是什么?@robkuz尽管我只在服务器端发出一次,但在客户端发出socket.on(“GlobalCall”…)有时被称为twiceCan您可以在前端的socket.on之前添加一个console.log,并检查此代码不是在发出时而是在发出时运行了多少次registering@AsifSaeed嗯,这是在全球范围内,所以没有什么重要的。我发现了这个问题,它与套接字没有直接关系。。。