WebSockets: отклонить рукопожатие для неправильного протокола, используемого клиентом (nodejs) - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть очень простой сервер / клиент websocket в JS:

Сервер:

const WebSocket = require('ws');
const wss = new WebSocket.Server({port: 3300});

wss.on('connection', function connection(ws, req) {
});

Клиент:

var ws = new WebSocket('wss://example.com/socket', ['appProtocol']); 

Я хочу отклонить соединение с сервером, когда Клиент не использует протокол 'appProtocol' .

Я чувствую, что это должно быть довольно легко, но я ничего не могу найти и не могу сделать это сам.Спасибо за любую помощь, спасибо!

1 Ответ

0 голосов
/ 21 сентября 2018

Nvm, я нашел решение, которое работает для меня:

Сервер:

const WebSocket = require('ws');
const http = require('http');
const server = http.createServer();
const wss = new WebSocket.Server({noServer: true});

wss.on('connection', (ws, req) => {
    console.log('Opened Connection with URL ' + req.url.substr(1));
    ws.on('close', () => {
        console.log('Closed Connection with URL ' + req.url.substr(1));
    });
});

server.on('upgrade', (request, socket, head) => {
    if (request.headers['sec-websocket-protocol'] === 'appProtocol') {
        wss.handleUpgrade(request, socket, head, (ws) => {
            wss.emit('connection', ws, request);
        })
    } else {
        socket.destroy();
    }
});

server.listen(3300);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...