Mic*_*ães 8 javascript c++ boost-asio websocket
我正在研究在移动设备上运行的HTML/Javascript,它与在PC上运行的Qt/C++应用程序进行通信.移动设备和PC都在本地网络上.HTML页面(客户端)和C++应用程序(服务器)之间的通信是使用Websockets完成的.
HTML页面是C++应用程序的远程控制,因此需要在移动设备和PC之间建立低延迟连接.
当使用任何非Apple设备作为客户端时,数据将以60到120帧/秒的速率发送,这是完全可以接受的.使用Apple设备时,此速率降至3-4帧/秒.我还检查了ping时间(Websocket实现,而不是命令行的ping命令).只要设备不传输数据,Apple设备就可以接受(1-5毫秒).无论何时传输数据,此ping时间都会增加到200ms.
从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>
Run Code Online (Sandbox Code Playgroud)
使用dosend()函数从Javascript端发送数据.
很少有想法和建议。
bufferedAmountWebSocket 上的属性以确定 WebSocket 是否正在缓冲数据。如果该bufferedAmount属性通常为零,则数据已传递到操作系统,操作系统可能会根据操作系统或套接字配置(例如Nagle )对其进行缓冲。| 归档时间: |
|
| 查看次数: |
2136 次 |
| 最近记录: |