2

我目前正在玩 Faye.js。订阅频道后,我希望该特定客户端接收与频道中已经存在的任何人无关的对象。

如何做到这一点?

更多细节:该对象是房间中最后 20 条聊天评论的数组。任何已经在房间里的人都应该已经收到了这个对象或者是聊天的一部分,所以这些人不需要接收它。

先感谢您。

4

1 回答 1

1

我遇到的唯一方法是生成客户端 GUID。当客户端连接时,它通过“公共”通道向其他人宣布自己,然后您可以使用 GUID 直接向该客户端发送消息。

例如,从上一个问题的答案中提取一段代码 来生成看起来像 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
};

您的服务器应该始终订阅“/announce”频道,并且当在该频道中发布任何消息时,它应该存储该 ID,以便它可以识别该特定客户端。然后,服务器可以使用这个 id 发布到只有这个客户端应该订阅的频道。

但是请注意,这对于敏感数据不是一个好主意。其他客户端也可以订阅“/announce”并出于恶意目的收集 guid。

于 2011-12-27T09:07:57.390 回答