WebSocket 根据初始请求向服务器发送数据

Posted

技术标签:

【中文标题】WebSocket 根据初始请求向服务器发送数据【英文标题】:WebSocket send data to server on initial request 【发布时间】:2021-10-15 22:24:33 【问题描述】:

就像标题在客户端第一次请求时所说的那样,我想将客户端 ID 发送到服务器。

var userId = "userId"; var ws = new WebSocket("wss://serveradress?clientId")

是否可以通过查询字符串或其他方式传递初始请求中的数据。

欣赏每一个想法,谢谢!

【问题讨论】:

【参考方案1】:

根据the docs,您可以调用 websocket onopen 方法。然后在回调中使用websocket send方法发送数据

websocket.onopen = function() 
   websocket.send(your data)

要接受传入的消息服务器端只需接受请求。这是假设您使用的是websocket-node

ws.on('request', (request) => 
  const conn = request.accept('echo-protocol', request.origin)
  conn.on('message', (message) => 
     console.log(message)
  )
)

如果您使用的是this package,那么只需监听“消息”事件即可。

ws.on('message', (message) => 
  console.log(message)
)

【讨论】:

谢谢!但是如何处理服务器站点上的数据? 我已经编辑了我的答案。如果您为 websockets 服务器端使用不同的包,这将不起作用。我建议使用github.com/websockets/ws 看起来不错,但现在的输出是 type:'utf8', utf8Data:'userId'。如何仅提取用户 ID 以将其传递给变量?? 我强烈建议阅读我发布的链接。并且还使用我提到的其他库。但是根据文档,您可以通过 message.utf8Data 访问它

以上是关于WebSocket 根据初始请求向服务器发送数据的主要内容,如果未能解决你的问题,请参考以下文章

websocket——通信梳理(短轮询、长轮询、socket、websocket、socket.io)

websocket实现原理

websocket实现原理

根据初始浏览器请求向服务器发送 JWT 令牌(使用本地存储)

在向浏览器发送数据时构建 websocket 头

WebSocket 和 HTTP 的区别