2009-08-14 35 views
0

我在Flex-BlazeDS中使用消息传递。当AIR客户端启动时,它将连接到目标和特定的子主题。在运行时,用户可以使用组合框订阅组不同的实时数据的进来,这个组合框更改事件改变了由副标题:更改BlazeDS和Flex中的子主题

messagingConsumer.subtopic = subtopicComboBox.selectedLabel; 
messagingProducer.subtopic = subtopicComboBox.selectedLabel; 
messagingConsumer.subscribe(); 

随后的消息被发送到服务器与新的副标题名称以及服务器知道发送到新的子主题。

这整个机制似乎非常糟糕,我想知道是否有其他人已经尝试过这种成功?大多数时候它是第一次,后来的消息不会得到发送,或者我得到的服务器错误,如:

[BlazeDS] ID为'my-streaming-amf'端点不能服务流媒体请求作为提供FlexClient ID'B07F3285-A408-816E-4697-F13F9B17E32C无效,或带该ID的FlexClient无效。

有时,当我改变子主题时,它将导致FlexSession和FlexClient被销毁而不仅仅是MessageClient。一旦FlexSession被破坏,它会混淆各种东西,包括注销用户。

也许我是通过改变分主题听取不同的实时数据集来解决复杂的事情,如果任何人有关于如何完成目的地或子主题的动态变化的任何其他想法,请列出这些。

回答

3

在更改子主题和重新订阅之前,您可能需要尝试取消订阅。

+0

是的,它做到了。实际上,我进一步了解了消费者和生产者的disconnect(),然后创建了每个实例。现在工作。 – Nick 2009-08-14 18:25:15