Проблема публикации пользовательских событий в каналах socket.io в feathersjs - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь опубликовать данные во внешнем угловом приложении, используя socket.io в feathersjs.Я создал канал следующим образом и создал поток mockData.

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?

1 Ответ

0 голосов
/ 21 сентября 2018

Возможно, это будет отличная функция в будущем, но в настоящее время издатели и каналы предназначены только для служебных событий , а не глобальных событий.Хотя объект app является источником событий, он ничего не отправляет клиенту.* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * app.io '* *'.пройти через канал / механизм публикации Feathers.

...