2011-12-26 57 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

相关问题