我需要传输触摸位置 in 安卓版 Chrome 不断地 to a Node.js
服务器使用Socket.io
。不过,我猜,传输速度太快了。前几个值接收到服务器(第一次接触大约六个值,后来只有两个或三个值),然后似乎出现交通拥堵。在很长一段时间里,服务器什么也没收到。然后,所有丢失的值突然到达服务器。但不是连续的...
我想我必须减少客户端到服务器的流量通过让客户端只发出interval500 毫秒。这个视频 https://youtu.be/U3ZBG6k9Pkc演示以下选项中的最后一个。
到目前为止我尝试过的(没有成功):
-
在客户端代码中将 setInterval 函数包装在 emit 函数周围:
setInterval( function(){
Socket.emit( 'position', posX )
}, 500);
-
调节排放Date.now()
在客户端代码中:
var timestamp = 0;
// ...
if (Date.now() - timestamp >= 500) {
Socket.emit( 'position', posX );
timestamp = Date.now();
}
-
节流touchmove
客户端代码中的事件使用underscore
library
$('#canvas').on("touchmove", _.throttle(function (ev) {
var e = ev.originalEvent;
var posX = logCounter + " : " + e.targetTouches[0].pageX;
$('#div').text(posX);
socket.emit('position', posX);
logCounter++;
return false;
}, 500));
让我提一下这个片段记录posX
两者都在 HTML 上div
在网页中AND在服务器的控制台中。浏览器按预期每 500 毫秒记录一次日志,但服务器(通过Socket.io
)按预期仅在开头记录,然后中断,然后立即记录所有缺失值。
该项目正在进行中Github https://github.com/fabifiess/syncPos.
有什么想法如何实现平滑(连续)传输?
Edit:
我发现这个问题只存在于我的 Android 手机和 Android 平板电脑上的 Chrome 浏览器中。
该应用程序适用于 Android 版 Firefox、Android 版 Opera 和 iOs 版 Safari。
我怎样才能智胜Chrome?
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)