如何保持golang.org/x/net/websocket打开?
发布时间:2020-12-16 19:28:54 所属栏目:大数据 来源:网络整理
导读:我天真地使用 _,err := ws.Read(msg)在我的代码中保持一个Web套接字.我不认为它可靠地工作. 在其他代码中,我注意到有人在做一个sleep loop.什么是正确的方式来保持一个Web插槽打开稳定?我假设底层图书馆做乒乓球? 更新:我非常有信心client.go是责怪的,因
我天真地使用
_,err := ws.Read(msg)在我的代码中保持一个Web套接字.我不认为它可靠地工作.
在其他代码中,我注意到有人在做一个sleep loop.什么是正确的方式来保持一个Web插槽打开&稳定?我假设底层图书馆做乒乓球? 更新:我非常有信心client.go是责怪的,因为在服务器上看到断开连接后似乎没有重拨.我做了a video demonstrating the issue.
我错读了你的原始问题.
不,你马上就这样做了.你基本上需要阻止处理程序的返回来保持websocket连接的活着.如果你不在乎消息,只要丢弃它并且不做任何事情. 人们常用的方式是拥有专门的读写goroutine,如: 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 } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |