WebSocket在连接中发送参数?

31moq8wy  于 2023-06-06  发布在  其他
关注(0)|答案(4)|浏览(408)

我需要使用nodejsWebsocket创建一个非常简单的文本聊天。
我把一切都准备好了。
我现在需要允许用户在WebSocket connection URL中发送一个参数。
像这样:websocket = new WebSocket("ws://test-website.net:8080/?id=55");
在我的研究中,我遇到了很多类似的问题,并发现我可以像上面的例子一样在URL中传递参数。
但是,它们都没有提到或解释如何在server.js中获取此参数(本例中为 *55 *)。

wss.on('connection', function(ws) {

///I need to get the parameter here////

});

对这个问题有什么建议吗?

8ehkhllq

8ehkhllq1#

在你的websocket请求处理程序中,它通常作为第一个参数传递给web socket;传入的HTTP请求作为第二个参数传递:

webSocketServer.on('connection', function connection(ws_client_stream, incoming_request) {
  console.log(incoming_request.url);
});

从那里,您可以使用url.parse获取URL的组件,例如您感兴趣的查询字符串。

tyu7yeag

tyu7yeag2#

对于nodejs (websocket.js npm)中的WebSocket库:

wsServer.on('request', function(request){
    var FullURL = request.resourceURL.query;
    console.log(FullURL);
    // . . your code  . . //
}

link = wss://localhost/?param=值

输出

{ param : 'value' }

此处请求.resourceURL返回对象

Url {
  protocol: null,
  slashes: null,
  auth: null,
  host: null,
  port: null,
  hostname: null,
  hash: null,
  search: '?id=65&encoding=text',
  query: { id: '65', encoding: 'text' },
  pathname: '/',
  path: '/?id=65&encoding=text',
  href: '/?id=65&encoding=text' }
xdyibdwo

xdyibdwo3#

如果您使用的是'WebSocket' lib,则以下代码将检索您的queryString:

wsServer.on('request', function(request) 
{
    console.log(request.resourceURL.query);
}

注1:这里不需要解析任何内容。
注2:虽然多年前已经回答过了,但如果人们认为上述答案更复杂,则此答案适用于那些人。

ma8fv8wu

ma8fv8wu4#

const { query } = parse(request.url, true)
    const jsonFormatString = JSON.stringify(query)
    const jsonData = JSON.parse(jsonFormatString);
    console.log(jsonData);

相关问题