【问题标题】:socket.io reconnect does not work as expectedsocket.io 重新连接没有按预期工作
【发布时间】:2016-03-25 01:38:40
【问题描述】:

每当玩家在我的游戏中注销时,服务器都会断开客户端连接;但是,当玩家在断开连接后再次尝试登录时,客户端会尝试更新连接——重新连接成功后,我会执行一个回调函数。我通过使用 Socket.IO 函数来做到这一点

client.io.reconnect();

服务器成功显示建立了新连接,但客户端似乎仍然完全断开连接。这是为什么呢?

总结:服务器断开客户端。我无法让客户端成功重新连接并触发client.on('connect') 事件。

【问题讨论】:

  • 您是否也在监视重新连接事件?
  • 我认为如果你断开客户端,那么你应该尝试重新连接,而不是重新连接:)
  • @Gary 看起来重新连接事件确实成功触发了;但是,我从客户端发出的任何内容都不会被服务器接收。虽然服务器确实提醒我客户端已重新连接。
  • @AndreyPopov 你什么意思?如果我没记错的话,我会以这种方式失去所有的事件监听器

标签: socket.io


【解决方案1】:

客户端是这样的,如果它被强制断开连接,它就不能重新连接。可以在代码herehere中看到:

// socket.js
/**
 * Called upon forced client/server side disconnections,
 * this method ensures the manager stops tracking us and
 * that reconnections don't get triggered for this.
 *
 * @api private.
 */

// manager.js

Manager.prototype.reconnect = function(){
  if (this.reconnecting || this.skipReconnect) return this;

如果你担心你会失去你的听众,那么引入一个函数来添加这些听众并在需要时添加它们:)

【讨论】:

    猜你喜欢
    • 2020-05-24
    • 1970-01-01
    • 2016-12-24
    • 1970-01-01
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多