我们目前正在构建基于 Meteor.js 和 Phaser.io 的实时多人游戏。
我们的问题如下: Meteor 的发布/订阅系统不够快,正如我们预期的那样。
客户端每秒最多可以调用 60 次方法来更新已发布的文档。并且经常发生玩家移动被冻结的情况,因为在 MongoDB 中写入每个更改,然后与观察者检查更改并推送到其他客户端的限制。如果两个玩家同时移动(这可能意味着在同一个文档上书写),则冻结发生的频率更高。
显然,如果我问这个问题,我已经确定冻结来自发布更新时间,而不是来自 Phaser.io
所以这是我的问题:如何在 Meteor 中实现“真正的”实时系统?
我一直在寻找 DDP,但文档真的很差,不要让我认为我可以用它有效地建立通信过程。似乎绝对没有办法使用 DDP 处理客户端和服务器之间的自定义事件。
当然,还有 Socket.io,但似乎很多人在用 Meteor 实现它时遇到了麻烦。
你会怎么做 ?哪种工具或方法是解决问题的最佳方法?
谢谢。