PC で実行されている Qt/C++ アプリケーションと通信しているモバイル デバイスで実行されている HTML/Javascript に取り組んでいます。モバイル デバイスと PC の両方がローカル ネットワーク上にあります。HTML ページ (クライアント) と C++ アプリ (サーバー) の間の通信は、Websocket を使用して行われます。
HTML ページは C++ アプリケーションのリモート コントロールであるため、モバイル デバイスと PC の間の接続を低遅延にする必要があります。
Apple 以外のデバイスをクライアントとして使用する場合、データは 60 ~ 120 フレーム/秒の速度で送信されますが、これはまったく問題ありません。Apple デバイスを使用する場合、このレートは 3 ~ 4 フレーム/秒に低下します。また、ping時間もチェックしました(コマンドラインからのpingコマンドではなく、Websocketの実装です)。デバイスがデータを送信していない限り、Apple デバイスでは許容されます (1 ~ 5 ミリ秒)。データを送信するたびに、この ping 時間は 200 ミリ秒に上昇します。
Javascript 側から見ると、Apple デバイスは、他のデバイスと同様に、常に 60 フレーム/秒の一貫した速度でデータを送信します。ただし、サーバー側では、クライアントが Apple デバイスの場合、これら 60 フレームのうち 3 ~ 4 フレームしか受信されません。
誰が何が起こっているのかについて何か考えを持っていますか?
ここに私のJavascriptコードがあります:
<script language="javascript" type="text/javascript">
        var wsUri = document.URL.replace("http", "ws");
        var output;
        var websocket;
        function init()
        {
            output = document.getElementById("output");
            wsConnect();
        }
        function wsConnect()
        {
            console.log("Trying connection to " + wsUri);
            try
            {
                output = document.getElementById("output");
                websocket = new WebSocket(wsUri);
                websocket.onopen = function(evt)
                {
                        onOpen(evt)
                };
                websocket.onclose = function(evt)
                {
                        onClose(evt)
                };
                websocket.onmessage = function(evt)
                {
                        onMessage(evt)
                };
                websocket.onerror = function(evt)
                {
                        onError(evt)
                };
            }
            catch (e)
            {
                console.log("Exception " + e.toString());
            }
        }
        function onOpen(evt)
        {
            alert("Connected to " + wsUri);
        }
        function onClose(evt)
        {
            alert("Disconnected");
        }
        function onMessage(evt)
        {
            alert('Received message : ' + evt.data);
        }
        function onError(evt)
        {
            alert("Error : " + evt.toString());
        }
        function doSend(message)
        {
            websocket.send(message);
        }
        window.addEventListener("load", init, false);
</script>
dosend() 関数を使用して Javascript 側からデータを送信します。