Как отправить "Upgrade" рукопожатие на сервер WebSocket с клиента с помощью модуля ws npm в nodejs? - PullRequest
0 голосов
/ 06 февраля 2019

Я использую модуль 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 и как их интерпретировать на стороне сервера?

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

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

Спасибо

1 Ответ

0 голосов
/ 12 февраля 2019

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

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

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

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

...