【问题标题】:How to add parameters to a FeathersJS socket connection如何向 FeathersJS 套接字连接添加参数
【发布时间】:2019-01-29 12:49:13
【问题描述】:

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

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

谢谢!

【问题讨论】:

    标签: javascript socket.io feathersjs


    【解决方案1】:

    如何通过Socket.io middleware 将服务器上的信息从 Socket.io 传输传递到 Feathers 记录在 in the Socket.io transport API。还有一个示例如何将查询参数从客户端传递到服务器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);
      }
    });
    

    【讨论】:

    • 你好Daff,谢谢你的回答,但我知道这个方法是为了设置服务器,我想将一些参数从客户端传递到服务器,而不是从服务器传递到客户端.. .基本上我想识别服务器上的客户端连接(具有唯一的客户端ID)以在服务器上打开它自己的通道(以这个唯一的ID命名),这将允许客户端获取一些服务调用的更新。有什么办法吗?
    猜你喜欢
    • 1970-01-01
    • 2013-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-02
    相关资源
    最近更新 更多