我的 go websocket 應用程序中有一個 redis pubsub 連接,因此每當客戶端連接并訂閱頻道時,它都會監聽并發送消息。但是,假設 Client 1 訂閱了 channel X,pubsub 開始監聽并接收來自它的消息?,F在,客戶端 1 也訂閱了頻道Y,因此服務器也應該收聽來自該頻道的消息,但是它停止收聽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 回答
- 0 關注
- 89 瀏覽
添加回答
舉報
0/150
提交
取消