如何在套接字服务器上使用预设ID连接客户端?

时间:2018-02-08 10:05:37

标签: node.js sockets

我的设置如下:

Client --> AuthenticationService --> REST-API --> MessageBroker(WebSocket) --> Client(s)

在系统中对客户端进行身份验证时,会获取令牌ID。现在,当任何客户端通过REST-API更改值时,我想通过websockets将此更改推送到每个客户端但是更改它的人。

因此,我想通过其令牌ID过滤我的socket.clients[]

当我传输更改时,很容易:我只需将令牌ID发送到REST-API。

  

但我需要以某种方式连接到套接字完全相同   tokenID。我怎么能做到这一点?这里有什么最好的做法吗?

这是测试客户端代码:

(function() {
  const ws = new WebSocket('ws://localhost:8080');
  const id = 123123

  ws.onopen = () => {
      console.log('websocket is connected ...')

      // sending the id to the socket after connecting
      ws.send('connected', id)
  }
})

但现在问题是:我如何知道套接字上哪个消息要传输id,哪些是正常的消息?

  

我不想检查来自客户端的每条消息,看看它是不是   id消息。

这里有什么帮助吗?将客户端与具有预设ID的套接字连接起来有什么好处?

1 个答案:

答案 0 :(得分:0)

回答我自己的问题:

当客户端连接到websocket时,只需将参数传递给url:

const webSocket = new WebSocket('ws://127.0.0.1:8080?tokenID=123')

在后端,您可以通过tokenID获取url.parse

const id = url.parse(req.url, true).query.tokenID