【问题标题】:Can WebSocket addresses carry parameters?WebSocket地址可以带参数吗?
【发布时间】:2013-06-22 11:34:40
【问题描述】:

ws://myserver.com/path?param=1 是一个有效的 WebSocket 地址吗?

地址http://myserver.com/path?param=1(注意它现在是http 而不是ws)与wscat 配合得很好,但我无法让它在浏览器上运行。

【问题讨论】:

  • 网址可以是任意的。
  • 您为什么尝试使用http: 方案访问WebSocket 地址?
  • @apsillers 我不是,我很惊讶 wscat 允许我......
  • 这样做的目的是什么?是用预定义的参数建立WS连接吗?另一种解决方案是在客户端发送给服务器的初始消息中包含该参数。
  • 如何在初始消息中包含参数?

标签: javascript html node.js websocket


【解决方案1】:

ws://myserver.com/path?param=1 是一个有效的 WebSocket URI。但是,您的 WebSocket 服务器应用程序访问路径和查询字符串的方式会有所不同,具体取决于您使用的 WebSocket 服务器框架。

如果您使用的是 Node.js einaros/ws 库,那么在您的 websocket 连接对象中将具有带有查询字符串的完整路径 upgradeReq.url

例如:

wss.on('connection', function(ws) {
    console.log("url: ", ws.upgradeReq.url);
};

当您连接到ws://myserver.com/path?param=1 时将打印url: /path?param=1

【讨论】:

  • jsp页面中如何获取传递参数?
  • 请注意:然后您可以使用url.parse() parse the url
  • 更新:upgradeReq 属性已删除。见github.com/websockets/ws/pull/1099
  • 与最新的 ws 一起使用。连接回调现在有另一个参数 - 它是 req. [代码] wss.on("连接", (ws, req) => { console.log(Conn Url ${req.url}); }); [/code]
【解决方案2】:

要与最新的 ws 一起使用,连接回调现在有另一个参数 - 它是 req。

wss.on("connection", (ws, req) => {
   console.log(`Conn Url ${req.url}`);
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-16
    • 2011-03-19
    • 2011-08-16
    • 2020-02-09
    • 2018-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多