Как добавить параметры в сокетное соединение FeathersJS - PullRequest
0 голосов
/ 29 января 2019

Я разрабатываю приложение, которое использует сервер FeathersJS, и приложение Electron, которое использует клиент FeathersJS Socket.io для подключения к серверу.Я хотел бы использовать каналы в приложении Electron, чтобы получать уведомления, когда некоторые данные на сервере изменились.Приложение Electron - это автономное приложение, поэтому нет никакой аутентификации пользователя или взаимодействия.Приложение Electron будет иметь уникальный идентификатор, представляющий каждую машину, на которой оно запущено.

Учитывая отсутствие какой-либо аутентификации, как я могу добавить уникальный идентификатор приложения Electron в socket.ioсоединение, чтобы этот идентификатор был получен на сервере и он мог создать соответствующий канал на сервере FeathersJS?

Спасибо!

1 Ответ

0 голосов
/ 31 января 2019

Как передать информацию на сервер из транспорта Socket.io в Feathers через промежуточное ПО Socket.io документировано в транспортном API Socket.io .В документации Socket.io также приведен пример передачи параметров запроса от клиента на сервер .В совокупности это выглядит так на клиенте:

const socket = io('http://feathers-server.com', {
  query: {
    token: 'cde'
  }
});

И вот так на сервере:

app.configure(socketio(function(io) {
  io.use(function (socket, next) {
    socket.feathers.token = socket.handshake.query.token;
    next();
  });
}));

socket.feathers точно так же, как объект канала connection, тактеперь у него есть свойство token, которое вы можете использовать для подключения в качестве канала:

app.on('connection', connection => {
  if (connection.token) {
    app.channel(connection.token).join(connection);
  }
});
...