gin-gonic和gorilla / websocket不会传播消息

时间:2017-06-20 00:13:51

标签: go gorilla

因此,我对此示例进行了一些更改,以使其与gin-gonic一起使用 https://github.com/utiq/go-in-5-minutes/tree/master/episode4

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

1 个答案:

答案 0 :(得分:1)

我查看了episode4 hub

我的观察如下:

  • 您在commit changes的每个传入请求上创建了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

r.SetHTMLTemplate(template.Must(template.ParseFiles("index.html"))) r.GET("/", func(c *gin.Context) { c.HTML(200, "index.html", nil) }) 上添加索引HTML处理程序:(添加它以测试我最后的第4集)

$http.post('/api/contact',$httpParamSerializer(text)).then(function (response) { 
         alert("success"); 
         console.log(response.data);
         console.log(response.status);
         console.log(response.headers);
         console.log(response.config);
     },function (error) { 
         alert("error"); 
         console.log(error.data);
         console.log(error.status);
         console.log(error.headers);
         console.log(config);
     });