我安装了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实施(使用自定义路由器)来支持此功能。确保页面看到自己的发布消息对我来说至关重要。如果无法转换代码,我需要做很多工作。
找到答案。在文档中,具体取决于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});