Gin-gonic 和 Gorilla/WebSocket 不会传播消息



所以我对这个例子做了一些更改,使其适用于杜松子酒https://github.com/utiq/go-in-5-minutes/tree/master/episode4

许多客户端之间的 websocket 握手是成功的。问题是,当客户端发送消息时,消息不会传播到其余客户端。

我看了一下你对episode4的提交更改。

我的观察如下:

  • 您将在流处理程序的每个传入请求上创建hub实例。 hub用于跟踪连接等的实例,因此您在每次请求时都会丢失它。
  • 您已经删除了索引/家庭处理程序(可能是您想转换为杜松子酒处理程序或其他东西,我不知道(。

现在,让我们episode4付诸行动。请进行以下更改(一如既往地根据需要进行改进(。我已经通过以下更改测试了您的episode4,它工作正常。

使/ws处理程序在server.go上工作:

h := newHub()
wsh := wsHandler{h: h}
r.GET("/ws", func(c *gin.Context) {
    wsh.ServeHTTP(c.Writer, c.Request)
})

删除connection.go上的流处理程序:

func stream(c *gin.Context) {
    h := newHub()
    wsHandler{h: h}.ServeHTTP(c.Writer, c.Request)
}

server.go上添加索引 HTML 处理程序:(将其添加到我最后的测试第 4 集(

r.SetHTMLTemplate(template.Must(template.ParseFiles("index.html")))
r.GET("/", func(c *gin.Context) {
    c.HTML(200, "index.html", nil)
})

最新更新