2 回答
TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊
當(dāng)您passer.data從go connect()例程向其發(fā)送數(shù)據(jù)時(shí),例程go p.Format()不在監(jiān)聽。因?yàn)槟褂玫氖菬o緩沖通道parser.data但沒有接收器正在監(jiān)聽,所以您的代碼被卡住了。要么使用緩沖通道,parser.data要么確保您的例程監(jiān)聽來自數(shù)據(jù)通道的傳入消息已啟動,并在實(shí)際將數(shù)據(jù)發(fā)送到通道之前進(jìn)行監(jiān)聽。在你的情況下,我想在Format例程之前開始例程Connect就足夠了。
TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超4個(gè)贊
我通過寫解決了它:
// 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
}
}
但我仍然對拆分操作和使用接收器感興趣,我不能接受這個(gè)作為答案,因?yàn)樗菃栴}的解決方案,但不是問題的答案。任何想法?
- 2 回答
- 0 關(guān)注
- 126 瀏覽
添加回答
舉報(bào)
