Javascript 二进制文件到服务器
Javascript binary file to server
我试图弄清楚高度可扩展的解决方案(为10000+的多个用户提供服务)是什么。
目标:我想要实现的是将鼠标坐标流写入二进制文件到服务器,即一旦流关闭,服务器就会从用户交互直接保存到服务器。坐标应每 20 毫秒(约 50fps)推送一次,以创建鼠标移动的紧密表示。
a) 我知道 nodeJS 可以用来做一个写流,但我不确定这样的结构是否可以处理如此频繁的更新 - 如果这是由多个用户完成的,这种方法可能会分崩离析。
b)另一种可能性是在本地将文件写入二进制文件,然后将其上传到服务器。
任何人都可以评论这些方法的功能,以及是否有另一种方法可以使用?
根据您对服务器不需要实时数据的评论,您绝对不应该每 20 毫秒将数据发送到服务器。 将其保存在客户端上并分块发送,例如每 30 或 60 秒发送一次。这可以在数组的内存中完成。保存鼠标坐标不是很密集。
一旦你准备好发送它,我想你会发现XMLHttpRequest
足够快,足以满足你的需求。
该演示展示了如何捕获到坐标,并表明 50fps 是可行的(我在 OS X 上的 Chrome 中获得了高达 60fps 的速度)。
演示:http://jsfiddle.net/ThinkingStiff/2Ls3A/
var coordinates = [],
count = 0,
SECONDS = 1000,
INTERVAL = 5;
window.onmousemove = function ( event ) {
//move cursor over page for at least 10 secs for an accurate reading
coordinates.push( [event.pageX, event.pageY] );
};
window.setInterval( function () {
console.log( ( coordinates.length - count ) / INTERVAL + 'fps' );
count = coordinates.length;
}, INTERVAL * SECONDS );
如果您真的认为您需要更高的数据发送效率,那么通过互联网连接客户端和服务器计算机的最低延迟方法是持久性TCP套接字。这可以通过 HTML WebSocket API
获得。
几乎每种服务器端语言中都有库,它们使用 ws:
URL 架构(wss:
表示安全)处理端点,例如socket.io
。
客户:
var socket = new WebSocket('ws://example.com/endpoint' );
socket.onopen = function () {
socket.send( 'send some text' );
};
我认为更好的解决方案是将点存储到数组中,然后转身将其发送到服务器。
此时,您需要启动一个新对象并让它获得新的更新,当您进入要发送到服务器的函数时,这样,在您准备和发送数据并获得响应期间,您仍然可以收集数据。
但是,您可能不会获得 50fps,但您可以在不同的浏览器上进行测试,看看合理的帧速率。
- 如何将PDF作为二进制文件传递到window.open()
- node.js将字符串转换为要上传到Web服务器的文件
- 如何在Windows中将Javascript文件编译成二进制文件
- 在Internet Explorer中从二进制文件打开PDF
- 如何使用JavaScript粘贴原始二进制文件而不出现“无效字符”错误
- 将服务器js文件替换为本地js进行调试
- Node.JS:从服务器端内存服务文件与服务器端文件
- 使用JavaScript从二进制文件中读取字节,而不使用jQuery
- 使用角度$http.get从服务器下载文件
- 使用 node.js 从 Google 云端硬盘读取二进制文件
- 使用 JQuery 读取二进制文件的浏览器之间的不同行为
- 热以显示服务器间文件传输的进度条
- 如何获取 CasperJS 请求的图像的二进制文件
- 如何使用
- 在 Lua/Luci 服务器上使用 HTML/JavaScript 下载服务器根文件系统中的现有文件
- 使用jQuery从服务器下载二进制文件
- Javascript 二进制文件到服务器
- 为什么我可以使用 FileSystemObjects 来读取和写入客户端二进制文件,而不能用于读取和发送到服务器
- 将JavaScript和CSS作为二进制文件从服务器传输到客户端的可行性
- 读取二进制文件从服务器和赞扬它在javascript