我在Flex-BlazeDS中使用消息传递。 AIR客户端启动时,它将连接到目标和特定的子主题。在运行时,用户可以使用组合框来订阅传入的不同组实时数据,此组合框更改事件通过以下方式更改子主题:

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


然后,还会使用新的子主题名称将消息发送到服务器,以便服务器知道要发送到新的子主题。

整个机制似乎非常小故障,我想知道是否有人尝试过并成功了?大多数情况下,它是第一次工作,然后才不发送消息,或者我收到服务器错误,例如:

[BlazeDS]标识为“ my-streaming-amf”的端点无法处理流请求,因为提供的FlexClient ID为“ B07F3285-A408-816E-4697-F13F9B17E32C无效”,或者具有该ID的FlexClient无效。

同样,有时当我更改子主题时,它将导致FlexSession和FlexClient被破坏,而不仅仅是MessageClient。一旦FlexSession被销毁,它就会搞砸各种事情,包括注销用户。

也许我正在通过更改子主题来收听不同的实时数据而使事情复杂化,如果有人对如何完成目的地或子主题的动态更改还有其他想法,请也列出来。

最佳答案

您可能想尝试取消订阅,然后再更改子主题并重新订阅。

08-26 10:38