我知道这可能是一个微不足道的问题,但也许有人知道如何在server-qml中处理多个websocket客户端。我没有从Qt的官方文档中理解为不使用C ++函数或webchannel来完成它。有可能吗?
我在程序中有一个websocket客户端和服务器。如果我从js代码连接到html页面(来自simplechat示例),我如何在QML应用程序中发送套接字并返回。如何处理服务器上每个套接字的名称并向其发送所需的文本。我将不胜感激任何帮助。
我目前的代码。
WebSocketServer {
id: server
listen: true
port:1234
onClientConnected: {
webSocket.onTextMessageReceived.connect(function(message) {
appendMessage(qsTr("Server received message: %1").arg(message));
webSocket.sendTextMessage(qsTr("Hello Client!"));
// how to get a list of sockets and an instance of a particular connected socket
});
}
onErrorStringChanged: {
appendMessage(qsTr("Server error: %1").arg(errorString));
}
}
WebSocket {
id: socket
url: server.url
active:true
onTextMessageReceived: appendMessage(qsTr("Client received message: %1").arg(message))
onStatusChanged: {
if (socket.status == WebSocket.Error) {
appendMessage(qsTr("Client error: %1").arg(socket.errorString));
} else if (socket.status == WebSocket.Closed) {
appendMessage(qsTr("Client socket closed."));
}
}
}
问题是,有一个页面包含以下代码,如聊天客户端
var wsUri = "ws://localhost:1234";
var websocket = null;
function initWebSocket() {
try {
if (typeof MozWebSocket == 'function')
WebSocket = MozWebSocket;
if ( websocket && websocket.readyState == 1 )
websocket.close();
websocket = new WebSocket( wsUri );
websocket.onopen = function (evt) {
debug("CONNECTED");
};
websocket.onclose = function (evt) {
debug("DISCONNECTED");
};
websocket.onmessage = function (evt) {
console.log( "Message received :", evt.data );
debug( evt.data );
};
websocket.onerror = function (evt) {
debug('ERROR: ' + evt.data);
};
} catch (exception) {
debug('ERROR: ' + exception);
}
}
它的websocket创建客户端并连接到所描述的服务器。当客户端从js脚本连接时,它可以向服务器发送消息,并且QML将显示在页面的中心。当QML应用程序中的新客户端套接字连接到服务器并且发送到消息QML服务器中的别名并且可以从服务器接收消息时。但是如何从应用程序消息中的套接字到达js和返回的客户。要做到这一点,可能需要将服务器作为定义的所需套接字,取实例
webSocket.sendTextMessage(qsTr("Hello Client!"));
套接字的是