postman 无法侦听从feather服务器发送到客户端的事件

bksxznpy  于 2023-01-13  发布在  Postman
关注(0)|答案(2)|浏览(185)

我正在构建一个使用 * feather * 和 socketio 的服务器。
我尝试使用featings通道机制来通知相关用户(连接)相关事件。
用户属于组,因此在连接到服务器时,我将连接添加到适当的通道。
发布后,在app.publish中,我得到了正确的数据,并看到连接已附加到通道,但不知道如何在客户机上侦听它。
这是一个简化的channels.js

app.on('connection', async (connection) => {
    connection.userGroups.forEach((group) => {
        app.channel(`group.groupId`).join(connection);
    }
    app.channel('1').join(connection); // dummy channel
}

app.publish((data, context) => {
    console.log(app.channel('1')); // output shown below
   
    return app.channel('1');
});

我使用Postman作为客户端,发送一个patch请求,并侦听featings文档中描述的名为rooms patched(rooms是我的服务名)的事件。
如果我使用原始的 socketio 示例并从那里发出,那么一切看起来都很正常,而且我在客户机中获得了事件

app.io.sockets.in('some room').emit('rooms patched', data);

但据我所知,它超越了整个渠道机制。
通过检查app.publish的输出

Channel {
  _events: [Object: null prototype] {
    empty: [Function: bound onceWrapper] { listener: [Function (anonymous)] }
  },
  _eventsCount: 1,
  _maxListeners: undefined,
  connections: [
    {
      provider: 'socketio',
      headers: [Object],
      userInfo: [Object],
      userGroups: [Array]
    }
  ],
  data: null,
  [Symbol(kCapture)]: false
}

我们可以看到连接**在那里。
有人能帮我解决这个问题吗?

0pizxfdo

0pizxfdo1#

这是个打印错误

app.channel(`group.groupId`).join(connection);

代替

app.channel(group.groupId).join(connection);
8fq7wneg

8fq7wneg2#

是否需要在客户端打开一个端口来创建通道,以便通信线路是双向的。也许javascript会有一些代码来打开客户端端口。

相关问题