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.
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!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
Qualcuno saprebbe come fare? Devo aprire un nuovo topic per questa domanda?
Grazie a tutti in ogni caso!![]()

Rispondi quotando
