Какие механизмы аутентификации можно использовать, если у меня есть сервер веб-сокетов, реализованный в Node.js с ws , например:
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });
let theObjects = [];
wss.on('connection', function connection(ws) {
ws.on('message', function incoming(message) {
if (message === 'create') theObjects[username] = CreateObject();
else if (message === 'change') theObjects[username].someParam = someVal;
});
});
и клиент QT QML:
WebSocket {
id: socket
url: "ws://myhost.ru:8080"
onTextMessageReceived: {
messageBox.text = messageBox.text + "\nReceived message: " + message
}
onStatusChanged: if (socket.status == WebSocket.Error) {
console.log("Error: " + socket.errorString)
} else if (socket.status == WebSocket.Open) {
var msg = {command: 'create', authorization: '****', params: {something: 'really cool'}}
socket.sendTextMessage(JSON.stringify(msg))
} else if (socket.status == WebSocket.Closed) {
messageBox.text += "\nSocket closed"
}
active: false
}
Я не уверен, что этот сценарий на 100% правильный, но по крайней мере у меня есть следующая идея о том, как мой клиент должен общаться с сервером:
Клиент должен иметь возможность подключиться к пользователюимя и пароль (через WSS), создайте некоторый объект на стороне сервера, запустите некоторую обработку данных с этим объектом и отключитесь.Когда пользователь подключается позже, он должен иметь доступ к своему объекту на стороне сервера (по имени пользователя или некоторому токену).Пока пользователь подключен, объект на стороне сервера периодически отправляет некоторые данные клиенту.
Вопрос в том, как правильно реализовать это и как аутентифицировать пользователя?
Лично,Я не нашел ничего связанного с аутентификацией ни в QT Websocket , ни в Node.js ws module