问题标签 [reconnect]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
291 浏览

google-app-engine - Google App Engine Channel Presence 未在重复使用的频道令牌上触发

我有一个应用程序支持使用 Google App Engine Channel API 在“主”设备和多个“遥控器”之间进行双向连接。为了节省数据消耗,“主”仅将其数据发送到已在数据存储实体中记录的远程设备。它看起来像这样:

{"ag5zfnBhbmRvcmEtaG9tZXIVCxINU29ja2V0U2Vzc2lvbhjZswEMremote1": "AHRlWrqfFk1Od_9FMObXMnbQRV0NPlAD41aRaYCZ8-dzpAV4aZI-6XjGqhlRBbGL8P4slwTUTw4mI2Mb8VgqWSnMbNyO7ewRHCwVnqCvY9vA-XS4vyESFlNS3nRbdeEjuCXEXMSMxiguixfjPDF5fiseQkXm2SOp2c0YD6onfM7PpN6gGDicH5A", "ag5zfnBhbmRvcmEtaG9tZXIVCxINU29ja2V0U2Vzc2lvbhjZswEMremote0": "AHRlWrr5tXCamZ5fN4z8LUM1Wj_60GFNYS7kOEokAM_QeAAL7nlYo5EDuYeEpz_kepwK-k1kQ543jDeTLmUXws9n_3L-ty1rsYUN3SIILfaf4_4UXDVujj6tWed2nmXvbZ8ScX7dOilJBjc_xdvIu6NRDhqe-Pt1oinRXcsAc_NpDFQEOs_5bH8"}

它只是一个将通道密钥与令牌匹配的密钥。然后,实体还可以确定哪些遥控器在线,哪些可以重复使用以及它们何时到期。它们使用通道存在入站处理程序添加,并通过其断开处理程序从实体中删除。但是,由于这些设备可能随时断开连接,因此为每个遥控器重新创建通道令牌是不切实际的。因此,当连接到服务器时,服务器会检查是否有任何未过期的旧令牌未被使用,并通过在数据存储实体中查找令牌的密钥返回旧通道令牌来指示远程设备使用它。

当通道按应有的方式接收数据时,通道状态不会收到它已连接的请求。更有趣的是,当遥控器断开连接时,它永远不会收到 ping,这很可能是由于 iPhone(远程平台)的 safari 中的 unbeforeload 问题。但是在开发服务器中它工作得很好。这是一个错误还是以这种方式重用令牌可能不可靠。

注意虽然我可以在确定遥控器是否应该使用旧令牌或新令牌时更新新遥控器存在的数据存储,但我宁愿使用通道存在作为更清洁的方法来验证套接字是否确实与客户。

编辑此外,我发现如果一个远程令牌在另一个远程尝试使用它之前已经处于非活动状态大约 4-8 分钟,则不会发生这种现象。

EDIT2 此外,我注意到在使用 iPhone 时,无论使用新令牌还是旧令牌,通道几乎总是在可靠连接后几分钟触发其 onerror 处理程序。但是,在笔记本电脑上不会发生这种情况。

0 投票
0 回答
141 浏览

html - HTML5:服务器发送事件

我对 html5 server-sent-events 有一些疑问。

客户端总是在连接关闭后尝试重新连接。我知道服务器可以定义重新连接之前的时间printWriter.write("retry: 5000\n")。但也有可能客户可以定义这个?或者如何防止客户端重新连接?

我的另一个问题是服务器如何向客户端抛出错误。客户端有一个错误处理程序eventsource.addEventListener('error', function(e) {...}, false);。所以一定有办法抛出错误?!

0 投票
2 回答
906 浏览

javascript - 重新连接超时时的 socket.io 事件

我正在使用 socket.io 在我的应用程序中进行 websocket 通信。连接丢失后,它尝试重新连接 6 次,然后达到超时。当不再尝试重新连接时,是否有任何事件发出?

0 投票
5 回答
5465 浏览

java - WebSphere 和 StaleConnectionException

我在 J2ee 应用程序中遇到了 StaleConnectionException。我已经研究(并搜索)并找到了解决方案。

这里是。

我不喜欢这个解决方案,因为如果我必须管理 StaleConnectionException,我在第一次方法调用时会有 6 秒的第一延迟。

我做了一个解决方法:在新的浏览器会话开始时测试连接,但我也不喜欢这样。

我可以实施更好的东西吗?

先感谢您。

嘎嘎

0 投票
1 回答
740 浏览

node.js - Socket.io:IE 仅触发一次重新连接事件

我有一个运行良好的 node.js/socket.io 应用程序。每次客户端失去连接时,它都会尝试使用 socket.io 预定义的进程重新连接:

这适用于除 Internet Explorer 之外的所有浏览器。我在所有重新连接事件上添加了一些警报,以检查问题可能出在哪里:

当我停止 socket.io 服务器(或客户端连接丢失)时,所有客户端都会收到“断开连接”消息。没问题。

使用非 IE 的客户端

所有客户端每 5 秒不断收到“重新连接...”消息,直到连接恢复,如果是,他们会收到最终的 OK 消息。

使用 IE 的客户

如果在 IE 尝试重新连接(第一次)时服务器仍然处于关闭状态,则客户端不会继续尝试重新连接,即使服务器再次启动,用户也永远不会连接,直到刷新页面。由于断开事件,客户端只收到一次“重新连接...”消息。

作为一个加号测试,如果在 IE 客户端尝试重新连接之前恢复服务器,则客户端重新连接成功。

我在这里发现了这个问题:https ://github.com/LearnBoost/socket.io/issues/1020 。但他们没有找到解决办法。我以动态方式提供 socket.io.js 文件,因此我无法按照他们建议的方式对其进行编辑。

谢谢!

0 投票
0 回答
647 浏览

python - 连接错误后redis重新连接到db0

我使用从 1 到 8 的 dbs 在同一个 redis 服务器上运行多个程序。我处理 redis 错误并且所有程序都工作正常并在大多数情况下重新连接到给定的 db,但是在重新启动 redis 服务器时出现错误 110(超时)和 113(无路由) 发生所有程序重新连接到 db0。有什么办法可以保护自己免受伤害吗?正如我所说,如果出现错误 111(连接被拒绝),所有程序都会重新连接到给定的数据库,并且没有问题。例子:

r = redis.Redis('127.0.0.1', 6379, 3)

0 投票
1 回答
521 浏览

c# - TCP 自动重新连接(直到用户告诉它停止)

如果 bool 为真,我有办法告诉 TCP 客户端一遍又一遍地连接,但我不知道这是否真的是一个好方法,因为我几乎一遍又一遍地告诉它,并忽略错误。

但我也不知道有任何其他方法可以做到这一点。

但也许你们会这样做,这是代码的一部分:

好吧,正如你所看到的,这是一团糟,但这是我得到的。

0 投票
1 回答
1332 浏览

firebase - Firebase 网络连接丢失 onDisconnect 处理程序故障

我在尝试处理 Firebase 中的网络连接丢失重新连接时遇到问题。

当连接重新建立时,它会正常工作并将用户数据再次写回firebase,但随后它会立即再次将其删除。据我所知, onDisconnect.remove() 函数似乎无序触发。

这是我的代码,也许有人可以发现问题或提出更好的方法来处理网络连接丢失:

0 投票
1 回答
2882 浏览

http - Mule ESB 中的重新连接策略

我正在尝试验证文档中提到的 Mule ESB 中的重新连接策略。

我已将标准重新连接策略设置为重试次数为 5 并且有一些超时。

(我的终点无法到达,因为故意停止它以测试场景)。

我在Mule控制台中有异常:异常堆栈是:1.连接被拒绝:连接(java.net.ConnectException)java.net.DualStackPlainSocketImpl:-2(null)2.无法通过端点路由事件:DefaultOutboundEndpoint

然后我将重新连接策略更改为“永远连接”并尝试了它。在这种情况下,我也遇到了同样的错误。

我的 qstn 是,如果我设置“永远连接”功能,那么我希望应用程序尝试重新连接,直到它成功。但这并没有发生。

而且在第一种情况下,如果我的重试次数是 5 次,那么我看不到任何提及重试次数的日志。

任何人都可以更好地解释这个重新连接属性是否真的在 Mule ESB 3.4 中工作。

提前致谢。

0 投票
3 回答
2569 浏览

android - LocationClient 在 `onDisconnect` 处自动重新连接

当连接丢失时(当用户清除 RAM 时),我尝试重新连接到 LocationClient。

我尝试使用此代码:

但是我在里面得到了 NullPointerException mLocaitonClient.connect()

如何修复它并重新连接?