2 回答

TA貢獻(xiàn)1797條經(jīng)驗 獲得超6個贊
當(dāng)您passer.data
從go connect()
例程向其發(fā)送數(shù)據(jù)時,例程go p.Format()
不在監(jiān)聽。因為您使用的是無緩沖通道parser.data
但沒有接收器正在監(jiān)聽,所以您的代碼被卡住了。要么使用緩沖通道,parser.data
要么確保您的例程監(jiān)聽來自數(shù)據(jù)通道的傳入消息已啟動,并在實際將數(shù)據(jù)發(fā)送到通道之前進(jìn)行監(jiān)聽。在你的情況下,我想在Format
例程之前開始例程Connect
就足夠了。

TA貢獻(xiàn)1802條經(jīng)驗 獲得超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 關(guān)注
- 106 瀏覽
添加回答
舉報