1

我有一个 crossbar.io 服务器设置,我正在https://github.com/crossbario/autobahn-js上的浏览​​器(chrome 81.x)中尝试示例代码

    // 1) subscribe to a topic
   function onevent(args) {
      console.log("Event:", args[0]);
   }
   session.subscribe('com.myapp.hello', onevent);

   // 2) publish an event
   session.publish('com.myapp.hello', ['Hello, world!']);

我没有看到订阅消息。从那以后,我开发了自己的应用程序,并且看到了同样的情况。发布事件的网页没有调用它的订阅。换句话说,如果我在 2 个窗口中打开了相同的页面并让页面 A 发布消息,则页面 B 会收到订阅事件,但页面 A 不会。

不确定这是 autobahn-js 还是 crossbar.io 的问题。

我之前有一个支持此功能的 WAMP v1 实现(带有自定义路由器)。确保页面看到自己的发布消息对我来说至关重要。如果这不可能,我需要做很多工作来转换我的代码。

4

1 回答 1

1

找到了答案。它在文档中,具体取决于 Google 为您找到的版本。

https://github.com/crossbario/autobahn-js/blob/master/doc/programming.md

默认情况下,即使发布者本身订阅了所订阅的主题,发布者也不会收到它发布的事件。可以通过在选项中传递 exclude_me: False 来覆盖此行为。

session.publish('com.myapp.complex', [1, 2, 3], {foo: "bar"}, {exclude_me: false});
于 2020-04-20T13:02:28.017 回答