SocketIO:是否可以通过每条消息发送令牌?

时间:2019-03-13 11:09:02

标签: javascript socket.io authorization

我知道SocketIO支持初始连接的查询参数,例如:

const socket = io({
  query: {
    token: 'cde'
  }
});

这一切都很好,但是我想知道是否有一种方法可以将一些数据“附加”到客户端发送的每条消息中,以便在服务器上进行验证。

从客户端api文档来看,“ emit”方法似乎不支持任何options对象,但也许我在其他地方缺少了一些东西。

该怎么办?当然,我可以发送一些额外的数据作为发出函数的最后一个参数,然后使用arguments对象提取它,但这似乎不是一个很干净的解决方案。

1 个答案:

答案 0 :(得分:2)

Socket.emit与node.js的ws send类似,即它向服务器发送原始数据帧,因此将令牌作为最后一个参数附加的选项似乎合适。

要获得更清洁的解决方案,您可以采用另一种方法来抽象发射,该方法接受消息obj作为参数,然后它将令牌添加到每个请求中,最后发出它。