Как отправить подтверждение обновления на сервер WebSocket с клиента с помощью модуля ws npm в nodejs?

Я использую модуль ws npm для создания клиента и сервера WebSocket в nodejs

От клиента я должен отправить на сервер запрос подтверждения «Upgrade» с некоторыми указанными протоколами на сервер.

Со стороны клиента это то, что я использую для подключения к серверу.

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 и как их интерпретировать на стороне сервера?

После этого рукопожатия я должен отправить преамбулу через текстовое сообщение через веб-сокет.

Пожалуйста, предложите.

Спасибо


person Shaik Syed Ali    schedule 06.02.2019    source источник


Ответы (1)


Некоторые веб-сервисы, такие как heroku, справляются с этим за вас, но другие, такие как openshift, нет. Просто попробуйте 'wss' вместо 'ws в строке URL-адреса.

Если вы хотите сделать это на localhost, попробуйте использовать модуль https вместо http. И если вам нужно сделать это вручную, попробуйте установить заголовки при создании веб-сокета.

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

Когда вы устанавливаете порт, вы также можете установить заголовки, но вы должны знать правильные поля, которые нужно установить, чтобы браузер принимал их.

person Ulises    schedule 12.02.2019