Salve a tutti!
Sto provando a realizzare questo collegamento perché sempre più spesso mi capita l'esigenza di doverne far uso, tanto vale imparare
Ho fatto parecchi passi avanti: ho utilizzato moduli e librerie che supportano WebSocket standard, ovvero ws per node.js e QWebSocket per Qt.
Ora riesco a far comunicare i vari client col server. In questo esempio il WebClient e il QtClient inviano "Hello World!" al server non appena si connettono:
codice:
# mainwindow.cpp (QtClient)
void MainWindow::onConnected()
{
connect(&m_webSocket, &QWebSocket::textMessageReceived, this, &MainWindow::onTextMessageReceived);
m_webSocket.sendTextMessage(QStringLiteral("Hello World! - from QtClient"));
}
# index.html (WebClient)
socket.onopen = function() {
socket.send("Hello World! - from WebClient");
};
# server.js
socket.on('connection', function(ws) {
ws.on('message', function(message) {
var m = JSON.parse(message);
console.log(m);
});
});
# console node
C:\Users\PietroP\Desktop\cs\v0.3>node server.js
Server connect on http://192.168.1.60:3000/
a user connected
Hello World! - from WebClient
a user connected
Hello World! - from QtClient
Utilizzando JSON riesco anche ad inviare un array dal WebClient al server.
codice:
# index.html (WebClient)
socket.onopen = function() {
var array = {
value1: "WebClient value1 = v1",
value2: "WebClient value2 = v2"
};
socket.send(JSON.stringify(array), {binary: true, mask: false});
};
# server.js
socket.on('connection', function(ws) {
ws.on('message', function(message) {
var array = JSON.parse(message);
console.log(array["value1"]);
console.log( array["value2"]);
});
});
# console node
C:\Users\PietroP\Desktop\cs\v0.3>node server.js
Server connect on http://192.168.1.60:3000/
a user connected
WebClient value1 : v1
WebClient value2 : v2
Tuttavia in QT il metodo QWebSocket.sendTextMessage(QString s) non prevede l'invio di array (ne tantomeno JSON) e non riesco a trovare un metodo che possa farlo!
Qualcuno saprebbe come fare? Devo aprire un nuovo topic per questa domanda?
Grazie a tutti in ogni caso!