登录
首页 >  Golang >  Go教程

Golang WebSocket 连接为何一个标签页能正常收发信息而另一个标签页无法收到信息?

时间:2024-11-20 09:04:11 151浏览 收藏

来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习Golang相关编程知识。下面本篇文章就来带大家聊聊《Golang WebSocket 连接为何一个标签页能正常收发信息而另一个标签页无法收到信息?》,介绍一下,希望对大家的知识积累有所帮助,助力实战开发!

Golang WebSocket 连接为何一个标签页能正常收发信息而另一个标签页无法收到信息?

golang 使用 websocket 时无法收到信息

在使用 gorrila websocket 库时,开发人员在本地开发中遇到问题:

当用户在 chrome 的不同标签页中通过 websocket 访问服务器时,一个标签页能够正常收发信息,而另一个标签页则无法收到信息。

问题分析

这个问题通常是由未为每个连接创建独立的 websocket 实例引起的。

解决方案

参考 github 上提供的聊天示例,为每个连接创建独立的 websocket 实例。

代码示例

在 websocket 包中:

func ws(c *gin.context) {
    // ...

    // 为每个连接创建独立的 websocket 实例
    wsconn, err := upgrader.upgrade(c.writer, c.request, nil)
    if err != nil {
        return
    }
    go handlewebsocket(wsconn)
}

func handlewebsocket(wsconn *websocket.conn) {
    for {
        // ...
    }
}

在 router 包中:

// ...

// 为每个连接创建独立的 WebSocket 实例
v1.GET("/ws", ws.Ws)

理论要掌握,实操不能落!以上关于《Golang WebSocket 连接为何一个标签页能正常收发信息而另一个标签页无法收到信息?》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>