gpt4 book ai didi

node.js - 如何使用nodejs中的ws npm模块从客户端向WebSocket服务器发送 "Upgrade"握手?

转载 作者:太空宇宙 更新时间:2023-11-04 01:36:07 26 4
gpt4 key购买 nike

我正在使用 ws npm 模块在 nodejs 中构建我的 WebSocket 客户端和服务器

从客户端,我必须使用一些指定的协议(protocol)向服务器发送“升级”握手请求。

从客户端来看,这是我用来与服务器建立连接的。

const ws = new WebSocket('ws://localhost:8989/');
ws.on('open', function open() {
console.log('Connected to Server');
})

这是我的握手请求,

GET <target> HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: com.xxx.service.v1
Sec-WebSocket-Version: 13

我应该如何使用 ws npm 模块将升级 header 和协议(protocol)添加到我的客户端连接请求中,以及如何在服务器端解释它们?

这是我的示例服务器端代码,

var port: number = 8989;
var WebSocketServer = WebSocket.Server;
var wss = new WebSocketServer({ port: port });

wss.on('connection', (ws: WebSocket) => {
console.log('Web Socket Server Connected');
});

我不知道如何通过 ws 客户端发送这些升级 header 以及如何在服务器端解释它们?

这次握手之后,我必须通过 websocket 短信发送序言。

请提出建议。

谢谢

最佳答案

一些 Web 服务(例如 heroku)可以为您处理此问题,但其他 Web 服务(例如 openshift)则不会。只需尝试在 url 字符串中使用“wss”而不是“ws”即可。

如果您想在本地主机上执行此操作,请尝试使用 https 模块而不是 http。如果您需要手动执行此操作,请尝试在创建 Websocket 时设置 header

    var wss = new WebSocketServer({ port: port,
aField: 'aValue',
anotherField: 'anotherValue' });

在设置端口的地方,您也可以设置 header ,但您必须知道要设置的正确字段才能让浏览器接受它们。

关于node.js - 如何使用nodejs中的ws npm模块从客户端向WebSocket服务器发送 "Upgrade"握手?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54546976/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com