[网页插件][更新] @提醒(1.0.4)
// 当 WebSocket 连接出错时触发 socket.onerror = (event) => { console.error("WebSocket 连接出错", event); // 关闭当前 WebSocket 连接 socket.close(); // 重新连接 WebSocket setTimeout(() => { console.log("重新连接 WebSocket"); connectToWebSocket(); }, 5000); // 延迟 5 秒重新连接 }; // 当 WebSocket 连接关闭时触发 socket.onclose = (event) => { console.log("WebSocket 连接已关闭", event); // 重新连接 WebSocket setTimeout(() => { console.log("重新连接 WebSocket"); connectToWebSocket(); }, 5000); // 延迟 5 秒重新连接 };
@残缘,@rkonfj,对了,我的js参考客户端有Bug,因为onerror和onclose会各自触发一次,导致1个连接失败后打开2个连接,连接数指数增长。
onerror
onclose
要改成这样:
// 当 WebSocket 连接出错时触发 socket.onerror = (event) => { console.error("WebSocket 连接出错", event); // 关闭当前 WebSocket 连接 socket.close(); }; // 当 WebSocket 连接关闭时触发 socket.onclose = (event) => { console.log("WebSocket 连接已关闭", event); // 重新连接 WebSocket setTimeout(() => { console.log("重新连接 WebSocket"); connectToWebSocket(); }, 5000); // 延迟 5 秒重新连接 };
@残缘,至于机器人心跳,是 @rkonfj 想发的。我也建议他不要发给未订阅心跳的连接,但是还没有实现。
@残缘,如果想保活,可以发{"action":"ping"}
{"action":"ping"}
socket.send('{"action":"ping"}');
会响应一个{"event":"ping","data":"pong"}
{"event":"ping","data":"pong"}
@残缘,多页面倒是没关系,目前压力不大。如果想改进那就只能用 SharedWorker 了。
@残缘,不会。close不是一个消息,而是TCP连接断开的事件。
@残缘,当socket.onerror发生时,TCP连接处于半关状态:服务器已经关闭连接,但客户端还没有。当socket.onclose发生时,TCP连接在服务器和客户端双方都彻底关闭。
socket.onerror
socket.onclose
@老虎会游泳,@残缘,已经实现可取消订阅事件(可取消订阅的事件有msg online offline)
msg
online
offline
不需要订阅机器人上下线事件可以在 websocket 连接建立成功后发送: {"action": "unsub", "data": ["online", "offline"]}
{"action": "unsub", "data": ["online", "offline"]}
后续有需要这些事件再发送: {"action": "sub", "data": ["online", "offline"]}
{"action": "sub", "data": ["online", "offline"]}
不清楚取消了订阅哪些事件发送: {"action": "lsunsub"}
{"action": "lsunsub"}
如果老虎更新hu60bot程序后,客户端什么也不做就和之前一样,会收到所有事件
hu60bot
@rkonfj,建议你给websocket服务写一个手册
@老虎会游泳,功能比较多的话,我来更新下 README.md
@残缘,服务器已经稳定运行 25h小时了,所以不是进程退出导致的。应该是,网络问题或者到达用户连接数上限,大概率是达用户连接数上限。看老虎怎么说
25h
@rkonfj,如果因为连接数上限关闭连接,能不能响应一个错误信息
@残缘,@rkonfj,对了,我的js参考客户端有Bug,因为
onerror
和onclose
会各自触发一次,导致1个连接失败后打开2个连接,连接数指数增长。要改成这样:
@残缘,至于机器人心跳,是 @rkonfj 想发的。我也建议他不要发给未订阅心跳的连接,但是还没有实现。
@残缘,如果想保活,可以发
{"action":"ping"}
会响应一个
{"event":"ping","data":"pong"}
@残缘,多页面倒是没关系,目前压力不大。如果想改进那就只能用 SharedWorker 了。
@残缘,不会。close不是一个消息,而是TCP连接断开的事件。
@残缘,当
socket.onerror
发生时,TCP连接处于半关状态:服务器已经关闭连接,但客户端还没有。当socket.onclose
发生时,TCP连接在服务器和客户端双方都彻底关闭。@老虎会游泳,@残缘,已经实现可取消订阅事件(可取消订阅的事件有
msg
online
offline
)不需要订阅机器人上下线事件可以在 websocket 连接建立成功后发送:
{"action": "unsub", "data": ["online", "offline"]}
后续有需要这些事件再发送:
{"action": "sub", "data": ["online", "offline"]}
不清楚取消了订阅哪些事件发送:
{"action": "lsunsub"}
如果老虎更新
hu60bot
程序后,客户端什么也不做就和之前一样,会收到所有事件@rkonfj,建议你给websocket服务写一个手册
@老虎会游泳,功能比较多的话,我来更新下 README.md
似乎服务太不稳定。
@残缘,服务器已经稳定运行
25h
小时了,所以不是进程退出导致的。应该是,网络问题或者到达用户连接数上限,大概率是达用户连接数上限。看老虎怎么说@rkonfj,如果因为连接数上限关闭连接,能不能响应一个错误信息