因此,我对该示例进行了一些更改以使其与gin-gonic一起使用
https://github.com/utiq/go-in-5-minutes/tree/master/episode4
许多客户端之间的Websocket握手成功。问题在于,当客户端发送消息时,该消息不会传播到其余客户端。
最佳答案
我看了你的episode4
的commit changes。
我的观察如下:
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)
})