2011-12-26 30 views
2

我目前在玩Faye.js.訂閱頻道後,我希望特定的客戶端能夠接收與頻道中任何人都無關的對象。發送數據到特定的客戶端,而不是整個頻道

這是如何實現的?

更多詳細信息: 該對象是房間裏最後20條聊天評論的數組。已經在房間裏的任何人都已經收到了這個對象,或者已經成爲聊天記錄的一部分,因此這些對象不需要接收它。

預先感謝您。

回答

1

我遇到的唯一方法是生成客戶端GUID。當客戶端連接時,它通過「公共」通道向其他客戶宣佈自己,然後可以使用GUID將消息直接發送到此客戶端。

例如,從this previous question的回答中獲取一段代碼,以生成看起來像UUID的內容。

然後,您可以做客戶端這樣的:

var guid = guidGenerator(); 
client.subscribe('/privChannel_' + guid, onPrivateMessage); 
client.subscribe('/pubChannel', onPublicMessage); 
client.publish('/announce', { 'myId': guid }); 

function onPrivateMessage() { 
// do something 
}; 

function onPublicMessage() { 
// do something 
}; 

您的服務器應該總是訂閱「/宣佈」通道,當任何消息發佈在該通道應該存儲ID,以便它可以識別特定的客戶端。然後,服務器可以使用此ID發佈到頻道,只有這個客戶端應該訂閱。

但請注意,這不是敏感數據的好主意。其他客戶也可以訂閱「/宣佈」,並出於惡意目的使用這些指導。

+0

感謝您的回覆 - 您是否有任何與每個客戶端使用GUID相關的示例? – Julio 2011-12-27 11:09:10

+0

我已經添加了一些詞語,希望能爲您澄清。 – 2011-12-27 13:22:31

相關問題