你好,这里是虎绿林。
微信 SwimmingTiger(加好友备注hu60,否则不容易通过),手机 18502433620(仅短信,拒接来电),邮箱 hu60.cn@qq.com(不常看),QQ 905172616(较少上线)
@残缘,不会。close不是一个消息,而是TCP连接断开的事件。
@残缘,多页面倒是没关系,目前压力不大。如果想改进那就只能用 SharedWorker 了。
@残缘,如果想保活,可以发{"action":"ping"}
socket.send('{"action":"ping"}');
会响应一个{"event":"ping","data":"pong"}
@残缘,@rkonfj,对了,我的js参考客户端有Bug,因为onerror和onclose会各自触发一次,导致1个连接失败后打开2个连接,连接数指数增长。
要改成这样:
// 当 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 秒重新连接
};
@童真再见,看起来造成问题的插件是 https://hu60.cn/q.php/bbs.topic.104544.html
@rkonfj,嗯,没问题,看起来造成问题的插件是 https://hu60.cn/q.php/bbs.topic.104544.html
@rkonfj,可以展示一下你是如何设置重连时间的吗?
不必了,看起来问题插件是:https://hu60.cn/q.php/bbs.topic.104544.html
chatgpt机器人:支持在油猴脚本里预设用户名和密码
document.hu60User = 'test';
document.hu60Pwd = '123';
@TabKey9,ping每60秒发生一次,防止机器人掉线
@TabKey9,只要登录失败就会弹出用户名密码框,这就是为了避免无限重试
@rkonfj,小老虎是不是也会以最快的速度不断重连?
@TabKey9,之前的问题是,如果用户名密码输入框被浏览器隐藏,就会以最快的速度不断尝试登录。
现在已经加了5秒延时。
@TabKey9,我看到了,我修改了。
@rkonfj,弄好了

@童真再见,12:02:45是问题停止的时刻,12:02:46你重新登录了。
3月 30 12:02:33 hu60-kunpeng run.sh[268701]: time="2023-03-30T12:02:33+08:00" level=warning msg="authentication failed: sid not found"
3月 30 12:02:33 hu60-kunpeng run.sh[268701]: time="2023-03-30T12:02:33+08:00" level=warning msg="authentication failed: sid not found"
3月 30 12:02:33 hu60-kunpeng run.sh[268701]: time="2023-03-30T12:02:33+08:00" level=warning msg="authentication failed: sid not found"
3月 30 12:02:39 hu60-kunpeng run.sh[268701]: time="2023-03-30T12:02:39+08:00" level=warning msg="authentication failed: sid not found"
3月 30 12:02:45 hu60-kunpeng run.sh[268701]: time="2023-03-30T12:02:45+08:00" level=warning msg="authentication failed: sid not found"
3月 30 12:02:46 hu60-kunpeng run.sh[268701]: time="2023-03-30T12:02:46+08:00" level=info msg="user 童真再见 is connected, there are currently 1 connections"
3月 30 12:02:46 hu60-kunpeng run.sh[268701]: time="2023-03-30T12:02:46+08:00" level=info msg="user 童真再见 is connected, there are currently 2 connections"
@小兽,这是你的推送历史记录,好像也不是太频繁啊,有最近几天吗?
图片已隐藏,在@消息中可见
@小兽,点进bot的个人信息页面,可以开启免打扰。免打扰消息不会推送。
@rkonfj,我决定把HTTP/1.1 503 Service Unavailable改成HTTP/1.1 429 Too Many Requests,后者更符合标准。
@rkonfj,对
@rkonfj,目前有一个头信息:
header('HTTP/1.1 503 Service Unavailable');
header('Retry-After: '.$needWaitSeconds);
@rkonfj,我可以添加一个功能来返回JSON
@rkonfj,hu60bot怎么拿到客户端真实IP:目前是以下头信息,但我建议不要假定管理员开了代理,首先使用remote addr。除非管理员指定了一个头信息参数,再使用它。
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
@rkonfj,是hu60bot访问了/user.index.json,不是用户访问了/user.index.json,nginx不可能神奇的感知到背后的用户IP是什么。
@rkonfj,所以我们需要req.Header.Set(一个自定义头信息的变量, 用户的真实IP)
@rkonfj,如果http.NewRequestWithContext(ctx, http.MethodGet, c.fullURL("/user.index.json")不传递IP,nginx显然不知道用户的IP是什么。