2016-09-09 53 views
0

我想創建一個可以聽一個變量事件名稱(即客戶端將啓動)像抽象插座IO服務器從事件名稱

socket.on(X, function(msg){ // X = any event name provided by the client 
    io.emit(X, msg); // Emit events to all the clients listening to the same event name 
}); 

例如一個SocketIO服務器,如果客戶端發出事件如"eventX",服務器應該能夠偵聽到"eventX",併發送到所有其他連接到監聽「eventX」的服務器的客戶端。

我的想法是,服務器不應該關心一組客戶端使用的事件的名稱,並且當客戶端組使用不同的名稱時,同一件服務器代碼應該能夠發出事件進行溝通。

+1

通過創建一個服務器偵聽的主消息名稱,然後在客戶端發送消息時使用第一個參數作爲客戶端選擇的子消息名稱,可以非常容易地完成此操作。可以發送其他參數,這些參數是特定於子消息名稱的。這可以滿足你的要求。 – jfriend00

+0

@ jfriend00這聽起來像一個很好的解決方案!當客戶數量增加時,這種方法會有什麼缺陷(當然,當這種情況發生時,我將擴展到不同的端口和虛擬文件系統)? – Prasanna

+1

只要您只向需要它的特定客戶端發送信息,擴展到大量客戶端就不應該受此方案的影響。如果您過度廣播(例如,將消息發送給許多不需要它們的客戶端),那麼事情可能會變得效率低下。 – jfriend00

回答

2

通過創建一個服務器偵聽的主消息名稱,然後在客戶端發送它時具有第一個參數作爲客戶端選擇的子消息名稱,可以非常容易地完成此操作。可以發送其他參數,這些參數是特定於子消息名稱的。這可以滿足你的要求。