我的设置如下:
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的套接字连接起来有什么好处?
答案 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