-
Notifications
You must be signed in to change notification settings - Fork 4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
transport/websocket: add heartbeat parameter for connection keep-alive #4065
base: main
Are you sure you want to change the base?
Conversation
em 没加config选项啊 |
yeah I agree with @Fangliding , it seem the keepalive mechanism should be handled by lower layer, eg. TCP/H2/QUIC |
|
Signed-off-by: hr567 <[email protected]>
所以你是遇到了这个问题吗,具体是什么中间件 |
我使用的CDN在代理WS时超时设置过小且目前无法设置,所以代理TCP连接时一段时间没有数据传输连接就会被迅速关闭,实测为出站设置更长的TCP keepalive对于我的CDN没有效果(比如用GPT的时候GPT正在思考,思考着思考着网络超时错误了 WebSocket虽然设计得也不好也快被抛弃了,不过目前在CDN支持是最完善的,使用xhttp在我的场景还有一些问题 |
其实与其在每个传输都塞 开mux也能保活连接 |
因为我的场景使用的是CDN且对延迟不敏感,开启 mux 多路复用对带宽利用的负面影响还挺大的。 mux 增加了协议的复杂性,在不需要多路复用的情况下为了连接保活开启 mux 感觉有些多余,而且 mux 也没有暴露 keepalive 间隔的配置项。 |
通过定时发送 ping message 为 WebSocket 传输模式添加心跳机制。未来可以改进为一段时间没有传输后发送。
为 ws 配置添加一项 heartbeat 配置,表示间隔固定时长发送 ping,单位为秒。默认为0,不指定时不发送ping,与当前行为一致。
(对xray和go都不太熟悉,如有疏漏请随意修改指正