【问题标题】:nodeJS server slow and jerky performance?nodeJS服务器缓慢而生涩的性能?
【发布时间】:2012-08-08 06:43:13
【问题描述】:

使用 nodeJS 和 socket.io 作为练习 我构建了一个鼠标光标的原型,由 iPhone 控制, 在浏览器视口上移动。 而已。它有效,但性能真的很差。光标很生涩,被切碎了...它移动不顺畅...正如我在终端中看到的发射,有时它会卡住...

我正在考虑使用类似下面的代码,但仍远未达到最佳状态..

setInterval(function() {
   socket.emit('sendposition', x, y);
}, 25);

我想知道是否有任何提高性能的最佳实践.. 如果性能这么差,你怎么能建立一个在线多人游戏?

谢谢!

【问题讨论】:

  • 我想我们需要更多信息。到目前为止,我在 nodejs 和 websockets 方面的经验非常好。从未经历过任何波涛汹涌。所以没有任何代码我们只能猜测。
  • 检查使用什么方法进行通信。如果 websockets 不工作并且它正在故障转移到 jsonp 之类的东西,由于更新请求之间的间隔,可能会出现抖动。
  • 你使用什么传输方式?

标签: javascript node.js heroku


【解决方案1】:

我尝试使用socket.send,而不是socket.emit,它听起来...更好..不是完美但更好...

【讨论】:

    【解决方案2】:

    网络流量可能有抖动,这是正常的,尤其是TCP流量,网络保证按顺序投递,所以当一个数据包延迟时,后面的所有其他数据包都必须等待。

    我建议您尝试使用 UDP,每个数据报在 X、Y 位置包含一个增量。这样,如果一些数据包出现故障,鼠标仍然会到达相同的目的地,如果一些数据包被丢弃,那么其他数据包仍然会通过并推动光标。

    【讨论】:

    • UDP 是一种通过 Internet 发送数据的方法,但与 TCP 不同的是,它不会重试并保证数据包的按顺序传送。每个都有自己的优势。如果要发送文件,请使用 TCP。如果您要为 VoIP 发送实时音频,请使用 UDP。 Node.js 通常与 TCP 一起使用,但也支持 UDP:nodejs.org/api/dgram.html
    • 唯一的问题是浏览器不支持 UDP,至少不支持任何可编写脚本的方式。
    猜你喜欢
    • 1970-01-01
    • 2010-11-23
    • 1970-01-01
    • 2014-03-22
    • 2013-09-14
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多