无法收听从羽毛服务器发送到客户端的事件
Can't listen to event sent from feathers server to client
我正在构建一个使用 feathers 和 socketio 的服务器。
我正在尝试使用 feathers channels 机制来通知相关用户(连接)相关事件。
用户属于群组,因此在连接到服务器后,我将连接添加到适当的频道。
发布后,在 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
请求,并监听名为 rooms patched
的事件(rooms 是我的服务名称),如 feathers docs 中所述。没有活动到达。
如果我使用原始 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
}
我们可以看到连接是。
谁能帮我解决这个问题?
是否需要在客户端打开一个端口来创建通道,所以通信线路是 2 种方式。也许 javascript 会有一些代码来打开客户端端口。
发现我愚蠢的打字错误...
我不小心写了
app.channel(`group.groupId`).join(connection);
真正应该的时候
app.channel(group.groupId).join(connection);
真的很遗憾。
我正在构建一个使用 feathers 和 socketio 的服务器。
我正在尝试使用 feathers channels 机制来通知相关用户(连接)相关事件。
用户属于群组,因此在连接到服务器后,我将连接添加到适当的频道。
发布后,在 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
请求,并监听名为 rooms patched
的事件(rooms 是我的服务名称),如 feathers docs 中所述。没有活动到达。
如果我使用原始 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
}
我们可以看到连接是。
谁能帮我解决这个问题?
是否需要在客户端打开一个端口来创建通道,所以通信线路是 2 种方式。也许 javascript 会有一些代码来打开客户端端口。
发现我愚蠢的打字错误...
我不小心写了
app.channel(`group.groupId`).join(connection);
真正应该的时候
app.channel(group.groupId).join(connection);
真的很遗憾。