我正在尝试使用feathersjs中的socket.io将数据发布到前端角度应用程序。我创建了一个频道,并创建了模拟数据流。
function mockData(app) {
app.emit('testEvent', { test: 'Something happened'});
};
setInterval(mockData.bind(null, app), 1000);
app.publish('testEvent', (data) => {
console.log('test');
return app.channel('testStream1');}
)
当客户端连接后,我将客户端添加到testStream1通道,如下所示。
app.on('connection', connection => {
// On a new real-time connection, add it to the anonymous channel
app.channel('testStream1');
app.channel('anonymous').join(connection);
app.channel('testStream1').join(connection);
});
app.publish
回调没有执行任何操作,但是如果我尝试直接从socketio对象发出,则可以在客户端中接收值。
function mockData(app) {
app.emit('testEvent', { test: 'Something happened'});
app.io.emit('testStream1', { text: 'A client connected!' }); // Adding this line, I am able to get values from socketio client
};
似乎app.publish([event,] fn)
未注册自定义事件testEvent
的发布功能。如何使用app.publish
获取数据?
答案 0 :(得分:1)
将来可能会很实用,但是目前,发布商和渠道仅用于service events,而不是全球性活动。尽管app
对象是事件发射器,但它不会向客户端发送任何内容。如果您create a custom service event命名为testEvent
,则可以
app.service('myservice').emit('testEvent', 'this will be published to clients');
您还可以直接在app.io
上发出任何Socket.io事件,但不会通过Feathers通道/发布机制进行。