我Buffer在我的节点服务器和Buffer我的Javacript客户端上使用.
为了节省字节,我希望通过websockets将数据作为二进制文件发送到服务器,而不是JSON.
所以,如果我有Javascript对象[ 5, false, 55, "asdf" ],我想在发送之前将其转换为客户端上的缓冲区.也许是这样的:
object.toBuffer('int16', 'bool', 'int16', 'utf8');
Run Code Online (Sandbox Code Playgroud)
并在服务器上读取它像这样:
var obj = buffer.read('int16', 'bool', 'int16', 'utf8');
Run Code Online (Sandbox Code Playgroud)
我正在寻找当前的解决方案,看起来我可能只需要做很多事情concat,指定字节偏移/长度,从int转换为布尔值等.
有没有更好的办法?
编辑:以下是我认为您目前必须这样做的方式.我想我的问题只是它太冗长和容易出错,而且我正在寻找一种更简洁,更优雅的方法,因为这个操作将在我的代码中的许多不同的地方执行.
// On client for [ 5, false, 55, "test" ]
const writeFirst = Buffer.allocUnsafe(2);
writeFirst.writeInt16LE(5, 0);
const writeSecond = Buffer.allocUnsafe(1);
writeSecond.writeUInt8(0);
const writeThird = Buffer.allocUnsafe(2);
writeThird.writeInt16LE(55, 0);
const writeFourth = Buffer.from('test');
const result = Buffer.concat([writeFirst, writeSecond, writeThird, writeFourth]);
// On server for reading buffer of [ 5, false, …Run Code Online (Sandbox Code Playgroud) 我有一个HTML Canvas元素,并实施捕获的刷子mousedown,mousemove和mouseupcanvas元素的事件.这一切都适用于在画布上绘图.但是,如果你的鼠标在画笔中间离开,我不认为我不喜欢你不能继续绘画.它只是削减它.这个人非常不宽容,在我看来并不是非常人性化.
如果打开Microsoft Paint并开始使用画笔或椭圆或其他东西进行绘制,只要在画布中开始,就可以将鼠标拖动到屏幕上的任何位置,并在任何地方重新进入画布.例如,它还可以轻松地在角落中绘制四分圆,因为您可以将椭圆工具拖离屏幕.我希望这是有道理的.
无论如何,我想知道是否有办法用HTML5画布实现这一点,或者我将如何实现这种事情.用户永远不必真正看到那边的任何东西; 它主要只是一个可用性功能.
编辑:很多这些解决方案的问题是如何处理坐标.目前我的画布位于屏幕中间,画布的左上角是(0, 0)右下角(500, 500).还必须考虑坐标的翻译工作.
编辑2:我发现显然你可以画出画布边界就好了.例如,您可以提供负宽度,高度和坐标,canvas元素可以很好地处理它.所以基本上解决方案可能只涉及捕捉文件的mousemove和mouseup,只是平移x,并y在画布的左上角开始.
对于我的Web应用程序,我将需要在任意给定时间一次运行许多超时,可能约为10,000-100,000。我想知道的是此功能的扩展程度。
我不需要那么精确,通常在10到100毫秒内就可以做到。最好让一个函数以一定间隔运行(例如,每50毫秒运行一次),该间隔检查当前日期时间与保存的日期时间,如果有,则调用该功能?
有没有人对setTimeout的基础实现有任何见识,并且可以阐明它在en-masse中的使用情况如何?
我还有其他问题:有人知道一次可以运行多少个超时的限制吗?同样,对于这两种方法,我担心的是每个时间间隔没有足够的时间来处理每个超时,并且就及时触发超时功能而言,它变得“落后”。
我正在尝试编写一个类似这样的查询:
SELECT * FROM table WHERE
(a, b) in ((23, [1]), (20, [0]), (17, [-1, 0, 1]), (55, [-1, 0]);
Run Code Online (Sandbox Code Playgroud)
结果集将是(假设项目存在!):
23, 1
20, 0
17, -1 (could have also been 17, 0 or 17,1)
55, -1 (could have also been 55, 0)
Run Code Online (Sandbox Code Playgroud)
也就是说,设置项类似于OR子句."我们坚持认为(a,b)包括(23,1)和(20,0),但17可以是-1,0或1." 那有意义吗?
这样的事情可能吗?
javascript ×3
node.js ×2
bounds ×1
buffer ×1
canvas ×1
database ×1
html5 ×1
jquery ×1
postgresql ×1
scalability ×1
settimeout ×1
sql ×1
websocket ×1