QML中的多个websockets

时间:2016-08-19 21:20:59

标签: c++ qt websocket qml

我知道这可能是一个微不足道的问题,但也许有人知道如何在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!")); 
套接字的

0 个答案:

没有答案