第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

GoLang pubsub 服務(wù)器停止監(jiān)聽新頻道訂閱

GoLang pubsub 服務(wù)器停止監(jiān)聽新頻道訂閱

Go
qq_花開花謝_0 2022-11-08 16:12:32
我的 go websocket 應(yīng)用程序中有一個 redis pubsub 連接,因此每當客戶端連接并訂閱頻道時,它都會監(jiān)聽并發(fā)送消息。但是,假設(shè) Client 1 訂閱了 channel X,pubsub 開始監(jiān)聽并接收來自它的消息?,F(xiàn)在,客戶端 1 也訂閱了頻道Y,因此服務(wù)器也應(yīng)該收聽來自該頻道的消息,但是它停止收聽X并且只收聽Y.    for {        switch v := gPubSubConn.Receive().(type) {        case redis.Message:            log.Printf("Received message from %s", v.Channel)            subscriptions := ps.GetSubscriptions(v.Channel, nil)            for _, sub := range subscriptions {                if v.Channel == types.TaskResults {                    go sendTaskResultMessage(v.Data, sub)                } else if v.Channel == types.TaskCount {                    go sendTaskCountMessage(v.Data, sub)                }            }        case redis.Subscription:            log.Printf("Subscription message: %s: %s %d\n", v.Channel, v.Kind, v.Count)        case error:            log.Println("Error pub/sub, delivery stopped")            return        }這是一個示例日志輸出go-1  | New Client is connected, total:  1go-1  | 2022/02/16 17:36:03 signature is invalidgo-1  | 2022/02/16 17:36:03 Subscription message: task_count: subscribe 1go-1  | 2022/02/16 17:36:06 Received message from task_countgo-1  | 2022/02/16 17:36:06 Received message from task_countgo-1  | New Client is connected, total:  2go-1  | 2022/02/16 17:36:14 signature is invalidgo-1  | 2022/02/16 17:36:14 Subscription message: task_results: subscribe 1go-1  | 2022/02/16 17:36:16 Received message from task_countgo-1  | 2022/02/16 17:36:16 Received message from task_resultsgo-1  | 2022/02/16 17:36:16 Received message from task_resultsgo-1  | 2022/02/16 17:36:21 Received message from task_resultsgo-1  | 2022/02/16 17:36:21 Received message from task_resultsgo-1  | 2022/02/16 17:36:26 Received message from task_resultsgo-1  | 2022/02/16 17:36:26 Received message from task_resultsgo-1  | 2022/02/16 17:36:31 Received message from task_resultsgo-1  | 2022/02/16 17:36:31 Received message from task_results有什么想法嗎?
查看完整描述

1 回答

?
Helenr

TA貢獻1780條經(jīng)驗 獲得超4個贊

直接的問題是由以下行引起的websocketHandler

gPubSubConn = &redis.PubSubConn{Conn: gRedisConn.Get()}

此行將當前的 pubsub 連接替換為新連接。新連接沒有任何訂閱。之前的連接泄露了。

在應(yīng)用程序啟動時創(chuàng)建一次 pubsub 連接。

該應(yīng)用程序至少有一個數(shù)據(jù)競爭。使用競賽檢測器運行應(yīng)用程序并修復(fù)報告的問題。


查看完整回答
反對 回復(fù) 2022-11-08
  • 1 回答
  • 0 關(guān)注
  • 96 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號