【问题标题】:Node JS and Mouse节点 JS 和鼠标
【发布时间】:2012-06-25 20:57:33
【问题描述】:

我正在尝试使用 node js 作为鼠标记录器来评估以下设置的可行性。我知道有简单的带有计时器和数组的 JS 鼠标记录器,但是在计时方面效率不够(由于 js 计时器类中的 ms 偏差)。

假设我希望能够做到以下几点:

1) 我不想在每次更改时都推送当前鼠标位置,而是想在本地缓冲它并以设定的间隔(例如 5 秒)推送数据。这可能吗?

2) 如果是这样,则此鼠标移动的流被保存为二进制文件。然后可以将二进制文件流式传输到另一个客户端。

一般来说,我很难理解流。据我了解,流只是发送给客户端的数据块。这是正确的吗?

【问题讨论】:

  • 我无法理解您使用 node.js 的原因,因为它用于为 服务器 供电。它在实际捕获鼠标数据中没有任何作用。
  • 我想使用这种方法将鼠标重新编码滞后问题与运行 js 记录器的计算机的性能分离。如果你用简单的js定时器+数组写入来记录鼠标,如果客户端的pc有较少的资源用于播放,js定时器的不准确性会影响播放。这可能会导致延迟,即播放不准确
  • Node.JS 是一个控制台世界,它本身只能通过 C/C++ 包装器捕获操作系统事件。所以我想这不是关于处理事件的问题,而是从浏览器以最小的延迟获取这个事件。对吗?

标签: javascript node.js


【解决方案1】:

1) 是的,有可能,我建议你使用事件发射器 事件监听器逻辑。

2) 当然,你可以做到。但请告诉我们更清楚您要做什么。同时您可以查看socket.io 流数据解决方案,或npm install ws。同样,这在很大程度上取决于您要开发的内容。

还有基于 RTMP 协议的更复杂和强大的解决方案,但我不知道为什么您需要在这里将几个字节从一侧发送到另一侧。如果您必须将这些数据块发送给多个订阅者,您也可以看看广播公司的想法。

【讨论】:

  • 这种方法的主要原因是基于 js 计时器类的 js 性能鼠标播放不够准确(~5ms),尤其是在与来自 rtmp 协议的音频等流媒体结合时。这就是为什么我认为给定音频和鼠标格式的同时流可以消除这些计时器问题,因为信息作为“捆绑”提供给客户端。
  • 您应该在操作系统级别上采取行动,或者至少在浏览器级别上采取行动。考虑到 ECMA 规范,任何 DOM 渲染器的嵌入式 JavaScript 引擎都会对任何事件处理程序产生延迟。所以目前它不是关于传输层的问题,而是减少获取这些事件数据的延迟。因此,我建议您处理 WebKit 源或一些操作系统的本机库,以获得有关鼠标位置和状态的信息的最小延迟。
  • 是的,你是对的,鼠标光标的“渲染”动作总是容易出现这些时间问题。我的想法是,当同时流式传输两种媒体类型时延迟是“同步的”,而不是在后台从 Flash 播放器进行 rtmp 播放以及从 js 进行鼠标播放(即有两个“时钟”独立运行)。
  • 我不确定我是否正在研究你想要做什么。您是否尝试同时在 2 个单独的浏览器(单独的计算机)上显示鼠标位置?
  • 不,我知道它可能令人困惑。我正在尝试连续记录鼠标,然后将其推送到服务器。然后,另一个用户可以将鼠标与音轨一起流式传输到他的计算机(它基本上就像一个视频,但它是一个音频和鼠标层)。我不确定这是否会规避计时器问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-04
  • 1970-01-01
  • 2018-03-26
  • 1970-01-01
  • 1970-01-01
  • 2019-02-02
  • 1970-01-01
相关资源
最近更新 更多