我在 Flex-BlazeDS 中使用消息传递。当 AIR 客户端启动时,它会连接到目的地和特定的子主题。在运行时,用户可以使用组合框来订阅不同的实时数据集,这个组合框更改事件通过以下方式更改子主题:
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 被销毁,它就会搞砸各种事情,包括注销用户。
也许我通过更改子主题来收听不同的实时数据集让事情变得过于复杂,如果有人对如何完成目的地或子主题的动态更改有任何其他想法,请也列出这些。