2014-10-12 87 views
0

是否可以使用socket.io將事件分派給客戶端,而不是將它們發送到服務器?喜歡的東西:socket.io客戶端可以在本地發出事件嗎?

socket.emitLocally('some event', data); 

這是爲什麼我要問:

此刻我的服務器發出事件,所有插座。

io.sockets.emit() 

儘管運行良好,但用戶交互和服務器響應之間可能存在延遲。

這就是爲什麼我寧願在服務器端使用廣播並在廣播客戶端立即處理事情。

socket.broadcast.emit() 

客戶端是基於angular.js和模塊不知道對方。我無法訪問負責直接更新客戶端的代碼。我將不得不使用某種事件調度服務,我將其注入相關模塊。

由於這基本上是what I am doing with socket.io right now我不知道我是否不能簡單地使用他們的系統來做到這一點。

謝謝您的任何意見或建議!

+0

那麼,你希望客戶發送一條消息給自己,而不是其他人? – jfriend00 2014-10-13 00:43:58

+0

@ jfriend00是的,但沒有實際發送消息(到服務器並返回)。我只是想觸發一個消息發送給客戶端的事件。這有意義嗎? ;) – marcorei 2014-10-13 06:22:21

+0

好吧,我想我遵循你的願望,但我沒有意識到socket.io中有任何能力來做到這一點。 – jfriend00 2014-10-13 06:24:05

回答

0

假設你使用

io.on("name",callback); 

趕在客戶端上的事件,你可以只調用

callback(); 

我希望我能幫助! =)

+0

我的例子太簡單了。你當然是對的,在一個簡單的例子中,我可以稱之爲聽衆。 我之所以問這個問題的原因是,我使用socket.io作爲集中式事件中心。所以我永遠不能確定我的應用程序的哪些部分會收聽它收到的事件。 向服務器發送事件時調用所有監聽器可能會非常混亂,在某些情況下可能甚至不可能。所以,不幸的是,這並沒有解決我的問題。 – marcorei 2015-08-31 20:25:20

+0

TBH,我真的不明白你怎麼能有一個系統從服務器使用'io.on'接收消息,但你不知道回調是什麼。你能再詳細一點嗎? – 2015-09-04 20:07:40

+0

我不知道使用'io.emit'時回調是什麼。但我知道如果一切順利,我的客戶會收到哪個活動。 例如:一個角度應用程序有三個完全獨立的模塊:一個用於在每次添加消息時顯示類似Toast的通知,一個用於列出屏幕左側未讀消息計數的聊天室以及一個用於在屏幕右側列出所選聊天的消息。 (接下來的評論..) – marcorei 2015-09-06 09:21:03