我正在使用ws npm模块在nodejs中构建WebSocket客户端和服务器
我必须从客户端向服务器发送“升级”握手请求,并向服务器发送一些指定的协议。
在客户端,这是我用来对服务器进行连接的方法。
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模块将升级标头和协议添加到客户端连接请求中,以及如何在服务器端解释它们?
这是我的示例服务器端代码,
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客户端发送这些升级头以及如何在服务器端解释它们?
握手后,我必须通过websocket短信发送序言。
请提出建议。
谢谢
答案 0 :(得分:0)
诸如heroku之类的某些Web服务可以为您处理此问题,但诸如openshift之类的其他服务则不能。 只需在网址字符串中尝试'ws'的'wss'intead。
如果要在本地主机上执行此操作,请尝试使用https模块而不是http。 而且,如果您需要手动操作,请尝试在创建websocket时设置标头
var wss = new WebSocketServer({ port: port,
aField: 'aValue',
anotherField: 'anotherValue' });
在设置端口的地方,您也可以设置标头,但是必须知道正确的字段设置,浏览器才能接受它们。