2
我目前在玩Faye.js.訂閱頻道後,我希望特定的客戶端能夠接收與頻道中任何人都無關的對象。發送數據到特定的客戶端,而不是整個頻道
這是如何實現的?
更多詳細信息: 該對象是房間裏最後20條聊天評論的數組。已經在房間裏的任何人都已經收到了這個對象,或者已經成爲聊天記錄的一部分,因此這些對象不需要接收它。
預先感謝您。
我目前在玩Faye.js.訂閱頻道後,我希望特定的客戶端能夠接收與頻道中任何人都無關的對象。發送數據到特定的客戶端,而不是整個頻道
這是如何實現的?
更多詳細信息: 該對象是房間裏最後20條聊天評論的數組。已經在房間裏的任何人都已經收到了這個對象,或者已經成爲聊天記錄的一部分,因此這些對象不需要接收它。
預先感謝您。
我遇到的唯一方法是生成客戶端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發佈到頻道,只有這個客戶端應該訂閱。
但請注意,這不是敏感數據的好主意。其他客戶也可以訂閱「/宣佈」,並出於惡意目的使用這些指導。
感謝您的回覆 - 您是否有任何與每個客戶端使用GUID相關的示例? – Julio 2011-12-27 11:09:10
我已經添加了一些詞語,希望能爲您澄清。 – 2011-12-27 13:22:31