Какой лучший способ обеспечить некоторые проверки, прежде чем клиентское приложение сможет успешно установить 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?
Спасибо!