【发布时间】:2015-04-28 06:17:00
【问题描述】:
我正在使用 websocket 和 nodejs(服务器代理消息从一个客户端到另一个客户端)为移动设备编写聊天,并遇到了这样一个问题:如果连接没有正确关闭(平面模式或拔掉电缆),发送功能仍然成功并且没有发生错误(错误始终未定义):
websocket.send(date.toISOString(), function ack(error) {
if (error) {
//Android push notification should be here
log.error("Send error" + error);
}
});
当然在一些超时后(在我使用的实现中是 15 分钟)连接关闭,如果电缆将被插回,我将收到所有消息,但我丢失了在电缆被拔下之间发送的所有消息(飞行模式已开启)和超时事件(如果最终发生)。
所以问题是 - 是否有任何方法可以发现消息已传递/未传递,或者在发生关闭事件时因超时而获取 所有 未传递的消息? 或者至少检查 TCP 套接字是否仍然打开?因为在 C/C++ 上编写系统级别非常容易......
我使用了这个 websocket 实现:https://github.com/websockets/ws,与这个 WebSocket-Node 的结果相同
这里是 github 上的 sn-p 要点:https://gist.github.com/SKART1/b0635f07d1b5799880d7
【问题讨论】:
标签: node.js networking tcp websocket