繁体   English   中英

Socket.io回调经历无限循环……为什么?

Socket.io callback goes through an infinite loop… why?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

服务器代码:

  socket.once("quit", function(quit, room3) { console.log("This is quit: ", quit); if (quit == true) { socket.to(room3).emit("quit", quit, room3); socket.leave(room3); console.log("EMITTING TRUE QUIT"); console.log("THIS IS ROOM:", room3); } else if (quit == false) { console.log("Quit is false"); console.log("False quit, room: ", room3); } }); 

客户代码:

 socket.on("quit", function(quit, room3) { console.log("This is room on socket quit: ", room3); console.log("This is roomm 1: ", room); if (quit == true && pc != null) { pc.close(); pc = null; quit = false; socket.emit("quit", quit, room2); } else if(quit == false) { console.log("quit is false right now."); } else { console.log("This message is going to appear quite a lot of times on the console. Why the infinite loop?"); } console.log("GOT QUIT", quit); }); document.getElementById("disconnect").addEventListener("click", function(e) { if (pc != null) { console.log("The person clicked disconnect!"); quit = true; console.log("This is the room on disconnect: ", room); socket.emit("quit", quit, room); pc.close(); pc = null; document.getElementById("connect").disabled = false; } } 

所以发生的是我正在尝试运行webrtc。 我可以连接两个人,然后断开它们的连接。 我使用不同房间名称(room和room3)的原因是,否则套接字将断开与其他房间的连接,并断开另一个连接,而不是它应该连接的连接。 所以我只是这样跟踪房间。 无论如何,在断开连接后,它就退出了,然后将其打印很多次(在console.log上,我说过要打印很多次)。 如果我在浏览器中进行调试并设置一个断点,它将几乎无限地遍历它。

它告诉我,它转到了socket.io代码中的回调函数...这是socket.io上的回调:

 if (callbacks) {
callbacks = callbacks.slice(0);
for (var i = 0, len = callbacks.length; i < len; ++i) {
  callbacks[i].apply(this, args);
}
}

而且它一直在不断前进,并打印和打印出一条消息……我不知道为什么。 我将quit设置为false,为什么不能停止?

1 个回复

尝试此操作,您将不会向您自己的客户端发送quit事件:

socket.broadcast.to(room3).emit("quit", quit, room3);
1 Redux和socket.io无限循环

我正在尝试使用socket.io和redux-socket.io来使多个客户端的数据存储保持同步。 每个客户将获取自己的“待办事项”初始列表,这些初始列表将放入其redux存储中。 然后,当一个客户端执行并添加,更新或删除时,我希望它广播给其他客户端以更新自己的redux存储。 这 ...

2 socket.io无限循环python / js继续数据

我被困在使用socket.io(烧瓶) 我的frotend js: 我的后端python: 如果此代码不在循环中(在js中),则效果很好,但在将其插入循环中(如上)后,python代码会自行循环并发送不会到达js的数据(没有控制台)。甚至记录日志事件),并且关闭站点不会停止 ...

3 如何防止react和socket.io中的无限循环

你好,我正在构建一个实时聊天信使。 它是这样工作的,但它创建了一个无限循环并打开了数千个套接字。 我尝试构建一个数组并推送到该数组然后返回它,但是当我发送消息时我的聊天没有更新。 有人可以帮忙吗? 提前致谢! ...

4 带React的Socket.io回调

我正在使用带有响应的Socket.io回调。 但是,有时我会收到此警告 警告:无法在已卸载的组件上调用setState(或forceUpdate)。 这是空操作,但它表明应用程序中发生内存泄漏。 要解决此问题,请在componentWillUnmount方法中取消所有订阅和异步任 ...

5 没有调用socket.io回调

做一些socket.io工作。 好像我的emit回调没有被触发。 我做对了吗? 我的日志记录看起来是正确的(请注意,上面的代码并不包含会生成这些日志的所有内容): 到此为止。 看起来socket.io没有调用我的回调。 但是文档非常清楚: 有时,当客户端确认消息 ...

6 了解 socket.io 回调

我正在尝试使某些 websocket 发出的接收双向通信,因此如果消息从客户端丢失,客户端重试,并且与服务器相同。 我对回调不是很熟悉,我所读到的只是它们存在并且您可以使用它们,但是我没有找到任何关于如何使用它们的好例子,或者我不理解这些例子。 这基本上是我现在的代码。 在 index.html ...

7 Socket.io页面的无限重载?

这是我的routes / index.js文件。 我已将时间设置为分钟,并希望在我的bookings.ejs文件中进行渲染,但无法渲染。 io.on之后的行未执行,我不知道为什么网页继续无限重载网页的原因。 如何解决此问题? 任何帮助表示赞赏。 我尝试了几种方法,但是并没有太大帮助。 ...

8 Socket.io回调函数参数混淆

我不确定我是否了解套接字的服务器端配置。 在这里,代码根据api参考创建了一个与http服务器“连接”的套接字服务器。 什么是附件? 问题:在这里,“ socket”变量是服务器或客户端的? 如果是服务器,那为什么socket.join(room)起作用? (客户端已添加到 ...

10 Socket.io地理位置回调

使用Google Maps API,我有几行代码可以在用户按下允许后检索用户的位置。 问题是我有一个socket.io事件,该事件在用户连接到页面时发出,并且它需要使用地理位置中的用户所在的城市。 不幸的是,这导致未定义城市输出,因为在地理定位找到用户的位置之前将运行套接字函数。 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM