gpt4 book ai didi

go - 如何保持 golang.org/x/net/websocket 打开?

转载 作者:IT老高 更新时间:2023-10-28 13:09:09 25 4
gpt4 key购买 nike

我天真地使用 _, err := ws.Read(msg)在我的代码中保持 Web 套接字打开。我不认为它工作可靠。

在其他代码中,我注意到有人在执行 sleep loop .保持 Web 套接字打开和稳定的正确方法是什么?我假设底层库会做 ping/pongs?

更新:我很有信心 client.go是罪魁祸首,因为在服务器上看到断开连接后它似乎没有重拨。我做了a video demonstrating the issue .

最佳答案

golang.org/x/net/websocket 没有实现 RFC 6455 中的 ping-pong,但是 gorilla websocket implementation做。Gorilla websocket 的最小示例

c := time.Tick(pingInterval)
go func(){
for _ := range c {
if err := conn.WriteControl(Ping...); err != nil {
handle error
}
}
}()

-----

conn.SetPongHandler(func(string) error { return conn.SetReadDeadline(time.Now().Add(pingInterval)) })
go func(){
for {
if _, _, err := conn.NextReader(); err != nil {
handle error
}
}
}()

关于go - 如何保持 golang.org/x/net/websocket 打开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34591094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com