Как использовать Socket.io в сервисе FeathersJS? - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь внедрить Socket.io в мое приложение Feathersjs / Angular и установил связь между интерфейсом и бэкэндом.

Я понимаю, что конфигурация в app.js настраивает сервер для связичерез WebSockets, но я не понимаю, как использовать его в Сервисе, который генерируется с помощью feathersjs.

Как я могу получить доступ к конфигурации socket.io внутри Сервиса?

Вотмой текущий код, который работает:

на сервере в app.js

// Set up Plugins and providers
app.configure(express.rest());
app.configure(socketio(function(io) {
  io.on('connection', function(socket) {
    socket.emit('backend-notification', { text: 'A client connected!' });
    socket.on('frontend-notification', function (data) {
      console.log(data);
    });
  });

  // Registering Socket.io middleware
  io.use(function (socket, next) {
    // Exposing a request property to services and hooks
    socket.feathers.referrer = socket.request.referrer;
    next();
  });
}));

на внешнем интерфейсе в app.component.ts

ngOnInit(): void {
    const socket = socketIo('http://localhost:3000');

    socket.on('backend-notification', (data) => {
      console.log(data);
      socket.emit('frontend-notification', { text: 'My frontend-notification!' });
    });
  }

1 Ответ

0 голосов
/ 06 ноября 2018

Наиболее распространенный способ - это также использовать Перья на клиенте , что позволяет вам прозрачно получать доступ к сервисам на сервере.Прямое использование сервисов через веб-сокет задокументировано в API прямого соединения для Socket.io :

ngOnInit(): void {
    const socket = socketIo('http://localhost:3000');

    socket.on('message create', (message) => {
      console.log('New message created', message);
    });

    socket.emit('create', 'message', {
      text: 'This is a new message'
    }, (error, message) => {
      console.log('New message created via socket', message);
    });
  }
...