2012-02-28 45 views
1

的设置的本地接待:预防发布的消息

一个服务器类(AbstractService的扩展) 一个的cometd客户端(定制C实现,但是无关这个问题)

小问题: 如果我服务器类发布到它自己的频道,它的handleMessage函数被调用。一般来说,我并不真的希望这样做,但我可以解决它(服务器不需要知道服务器何时发送消息)。我可以使用ServerSession.deliver而不是发布吗?

真正的问题: 在我的客户,我将消息发送到服务器类的频道服务器。服务器的handleMessage函数被调用,但是该消息也被发送回原始客户端。有没有办法配置服务器,使消息不被发回给始发客户端?

只见扩展类,但这似乎上面的操作将消息发送到不同的客户只有一个级别(如果我在这里杀的消息,它不会发送到任何客户端,包括服务器)。

任何想法? 在此先感谢!

回答

1

如果消息被发送回原始发件人,那么它很可能订阅该频道。

没有指定频道的名字,但你应该明白广播渠道和服务渠道,看到here之间的不同。

如果您的客户端发布到服务频道,则该消息到达服务器并且不会广播给订阅者,而如果您的客户端发布到广播频道,则服务器将其广播给订阅者(其中包括您的客户端)那很可能是你的客户收到消息的原因。

ServerSession.deliver()可用于执行消息传递(在任何通道上)至特定的客户端(相对于广播到所有用户)。

如果您的客户端不需要的消息被广播,则通常是最好的解决方案是使用一种服务渠道。

+0

谢谢!我知道我错过了一些简单的事情。我显然完全跳过了手册的服务部分! – Arsinio 2012-02-28 23:03:33