如何保持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,如:

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
}
原文链接:https://www.f2er.com/go/186781.html

猜你在找的Go相关文章