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