2 回答
TA贡献1797条经验 获得超6个赞
当您passer.data
从go connect()
例程向其发送数据时,例程go p.Format()
不在监听。因为您使用的是无缓冲通道parser.data
但没有接收器正在监听,所以您的代码被卡住了。要么使用缓冲通道,parser.data
要么确保您的例程监听来自数据通道的传入消息已启动,并在实际将数据发送到通道之前进行监听。在你的情况下,我想在Format
例程之前开始例程Connect
就足够了。
TA贡献1802条经验 获得超4个赞
我通过写解决了它:
// Connect to the WhatsApp client
go Connect()
for {
select {
case data := <-p.data:
fmt.Println("recieved")
switch {
case len(data.event) > 0:
fmt.Fprintf(w, "event: %v\ndata: %v\n\n", data.event, data.message)
case len(data.event) == 0:
fmt.Fprintf(w, "data: %v\n\n", data.message)
}
flusher.Flush()
case <-r.Context().Done():
<-p.connection
fmt.Println("Connection closed")
return
}
}
但我仍然对拆分操作和使用接收器感兴趣,我不能接受这个作为答案,因为它是问题的解决方案,但不是问题的答案。任何想法?
- 2 回答
- 0 关注
- 85 浏览
添加回答
举报