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 關注
- 109 瀏覽
添加回答
舉報