go-将来自 kafka 的消息发送到 websocket
发布时间:2022-03-24 15:48:45 557
相关标签: # css
我在golang用gin框架创建了一个web服务。在这个项目中,我还使用了一些来自特定主题的卡夫卡信息。我试图实现的是将我从主题中收到的信息倾诉到websocket中。因此,通信只有一种方式,超过一个人可以连接到web套接字,并看到传入的消息。我想使用channel,所以在接收卡夫卡消息的函数中,我有如下内容:
ch <- KafkaMessage
在gin框架中,我创建了如下内容:
requestRouterRPCv1.GET("wf-live", wsWorkFlowLive)
func wsWorkFlowLive(c *gin.Context) {
ws, err := upGrader.Upgrade(c.Writer, c.Request, nil)
if err != nil {
log.Println("error get connection")
log.Fatal(err)
}
defer ws.Close()
err = ws.WriteJSON(<-ch)
if err != nil {
log.Println("error write message: " + err.Error())
}
}
var upGrader = websocket.Upgrader{
CheckOrigin: func(r *http.Request) bool {
return true
},
}
这里是我用来测试websocket的html片段:
index test websocket
但我错过了一些东西,我是一个新手,因为一旦我收到卡夫卡的第一条信息,我就有以下错误行为:
- 连接快速关闭后,只显示第一条消息
- 要查看第二个,我必须刷新页面,这不是websocket的方式
- 因为连接是关闭的,所以它不是红色的,所以在我读到它之前,它一直被卡在cosume函数中。我不能有这种行为
- 为了避免第3点,我认为我必须有一种机制,只有当一个或多个ws连接时,我才会将消息发送到通道。
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报