Vue и Node WebSockets - Как аутентифицировать пользователя перед установлением соединения? - PullRequest
0 голосов
/ 04 мая 2020

Какой лучший способ обеспечить некоторые проверки, прежде чем клиентское приложение сможет успешно установить sh соединение с сервером Node (например, приложение Electron).

Ipinca из websocket / Библиотека ws предложила использовать прослушиватель событий server.on ('upgrade', ...), но с его помощью мы можем проверять только данные, отправленные в данный момент с клиента.

const http = require('http');
const WebSocket = require('ws');

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

wss.on('connection', function connection(ws, request, ...args) {
  // ...
});

server.on('upgrade', async function upgrade(request, socket, head) {
  // Do what you normally do in `verifyClient()` here and then use
  // `WebSocketServer.prototype.handleUpgrade()`.
  let args;

  try {
    args = await getDataAsync();
  } catch (e) {
    socket.destroy();
    return;
  }

  wss.handleUpgrade(request, socket, head, function done(ws) {
    wss.emit('connection', ws, request, ...args);
  });
});

server.listen(8080);

Но что если мы захотим проверить, авторизован ли уже пользователь, и в этом случае мы не хотим его аутентифицировать снова? Нужно ли нам отправлять HTTP-запросы перед открытием соединения WebSocket для этих проверок, и рекомендуется ли использовать один и тот же порт для протоколов Ws и Http?

Спасибо!

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