如何向FeathersJS套接字连接添加参数

时间:2019-01-29 12:49:14

标签: javascript socket.io feathersjs

我正在开发一个使用FeathersJS服务器的应用程序,以及一个使用FeathersJS Socket.io客户端连接到服务器的Electron应用程序。当服务器中的某些数据发生更改时,我想使用Electron应用程序中的通道来获得通知。 Electron应用程序是一个“自动”应用程序,因此没有任何用户身份验证或交互。 Electron应用程序将具有一个唯一的ID,该ID代表其运行的每台计算机。

考虑到没有任何身份验证,我如何在socket.io连接中添加Electron应用程序的唯一ID,以便该ID在服务器中接收,并且可以在FeathersJS中创建相应的通道服务器?

谢谢!

1 个答案:

答案 0 :(得分:0)

如何Socket.io middleware记录了如何通过in the Socket.io transport API将服务器上的信息从Socket.io传输传递到Feathers。还有一个示例如何将查询参数从客户端传递到服务器in the Socket.io documentation。像这样在客户端上放在一起:

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);
  }
});