【发布时间】:2017-12-12 11:31:24
【问题描述】:
我有一些这样的 node.js 客户端代码:
socket.emit('clickAccept', { myrecid: recid });
服务器端 node.js 代码运行良好,一切正常。
如果我关闭服务器以模拟服务器端中断,然后单击在客户端触发此 socket.emit 的按钮,就会发生这种情况:
- 没什么,我猜它最终可能会超时
- 当我重新启动服务器时,点击最终会发送到服务器,然后服务器会对其进行操作(我猜想类似于 TCP)。
我想要发生的是那些socket.emit 调用在短暂超时后终止并且在服务器恢复时不发送,这会导致各种混乱,因为如果他们点击 3 次,什么都没有发生,那么当/如果连接或服务器恢复正常,它们会同时得到 3 个响应。
另外,如果他们点击并因为服务器关闭而超时,我想向客户端用户显示一个错误,让他们知道基本上点击不起作用并重试。
如果套接字出现故障,我知道如何处理并显示错误,但如果他们当时没有尝试单击某些东西,我不想这样做。向用户触发错误是没有意义的,因为如果他们此时不需要做任何事情,套接字就会短暂关闭。
所以,明确地说,我只想在他们单击按钮并且客户端和服务器之间的套接字关闭时显示错误。并且...如果他们遇到错误,我想杀死那个发射,而不是全部保存并在服务器几秒钟后恢复时触发它以及所有其他点击。
提前致谢,我希望这至少相当清楚。
【问题讨论】:
-
很清楚你想要什么,但不清楚你的具体问题是什么。大多数(如果不是全部)要求必须手动实现:跟踪连接状态、如果用户在连接断开后单击、显示错误、消除单击等。
标签: javascript node.js socket.io