這實際上是一個編程設計問題,而不僅僅是特定的語言或庫問題。我正在修改一個獨立的websockets聊天服務器的想法,它將接受幾個基於瀏覽器的遠程JavaScript客戶端。我首先要做一些超級簡單的事情,然後再構建它。服務器只是保持接受客戶端連接並收聽消息。當收到一條消息時,它將被髮送回所有的客戶端。聊天服務器如何將消息分發給多個客戶端?
我需要更好地理解的是,哪種方法最適合將消息發送給所有客戶端,具體而言,即時發送給所有客戶端,或者在客戶端連接處理程序輪到時將消息排隊到每個客戶端隊列以發送向上。下面是一個蟒蛇般的僞代碼的兩個例子:
廣播法
def client_handler(client):
while true:
if(client.pending_msg):
rmsg = client.recv()
for c in clients:
c.send(rmsg)
client.sleep(1)
隊列方法
def client_handler(client):
while true:
if client.pending_msg:
rmsg = client.recv()
for c in clients:
c.queue_msg(rmsg)
if client.has_queued:
client.send_queue
client.sleep(1)
什麼是最好的方法?或者,也許它們適合不同的使用情況,在這種情況下,它們應該使用哪些優點,缺點和環境。謝謝!
我想到的最好的東西是https://en.wikipedia.org/wiki/Observer_pattern – Tempux