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

前端之家收集整理的这篇文章主要介绍了如何保持golang.org/x/net/websocket打开?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我天真地使用 _,err := ws.Read(msg)在我的代码中保持一个Web套接字.我不认为它可靠地工作.

在其他代码中,我注意到有人在做一个sleep loop.什么是正确的方式来保持一个Web插槽打开&稳定?我假设底层图书馆做乒乓球?

更新:我非常有信心client.go是责怪的,因为在服务器上看到断开连接后似乎没有重拨.我做了a video demonstrating the issue.

我错读了你的原始问题.

不,你马上就这样做了.你基本上需要阻止处理程序的返回来保持websocket连接的活着.如果你不在乎消息,只要丢弃它并且不做任何事情.

人们常用的方式是拥有专门的读写goroutine,如:

@H_301_13@func fishHandler(ws *websocket.Conn) { id := ws.RemoteAddr().String() + "-" + ws.Request().RemoteAddr + "-" + ws.Request().UserAgent() sockets[id] = ws go writePump(ws) readPump(ws) } func readPump(ws *websocket.Conn) { defer ws.Close() msg := make([]byte,512) _,err := ws.Read(msg) if err != nil { return } } func writePump(ws *websocket.Conn) { // Hand the write messages here }

猜你在找的Go相关文章