国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

worker->count大于1時,客戶端之間怎樣通信?

knightmade

我的理解,當(dāng)worker->count大于1時,會啟動多個進程處理客戶端的連接。
假設(shè)當(dāng)worker->count為2時,會啟動worker1和worker2兩個進程,
多個客戶端連接上來時,假設(shè)為以下的場景:

worker1: A, B, C
worker2: D, E

當(dāng)客戶端A要給客戶端D發(fā)消息時,A如何獲得D的connection?
如果A和D是分別連到不同的進程上,那互相之間應(yīng)該是無法直接通信的。
workerman是如何處理這樣的問題的?

同樣,當(dāng)A想向所有客戶端廣播時,也有同樣的問題。

求解答。

6675 2 1
2個回答

walkor 打賞

首先有很多方法可以做到進程間通訊。

一個簡單做法是建立一個全局worker_global進程,worker1 worker2 ...在onWorkerStart時連接這個worker_global進程,當(dāng)客戶端A要給客戶端D發(fā)消息時,worker1發(fā)現(xiàn)當(dāng)前進程沒有D客戶端的connection,則給worker_global進程發(fā)消息,讓worker_global進程將消息轉(zhuǎn)發(fā)給worker2,然后再由worker2發(fā)給客戶端D

這樣可以做到所有的worker進程互通,向某個客戶端發(fā)送消息或者廣播消息就非常容易了,而且可以做到分布式部署,可以通過簡單的增加服務(wù)器增大系統(tǒng)承載用戶數(shù)

這里有個之前寫的例子(沒有經(jīng)過測試)可以參考下,https://github.com/walkor/Pusher

當(dāng)然這個是一個比較方便的通訊模型,還有很多其它方法可以實現(xiàn)進程間的通訊

  • 暫無評論
walkor 打賞

可以利用workerman的Channle組件來完成進程間/服務(wù)器間通訊

http://doc3.workerman.net/component/channel.html

年代過于久遠,無法發(fā)表回答
??