我以前做过类似的事情,但我想听听来自经验丰富的程序员的建议。
听起来是一个很适合使用node.js的项目!
需要澄清的是,node.js是javascript的服务器端实现。您需要的是基于comet的应用程序(一种基于Web的客户端应用程序,它接收服务器端推送而不是客户端不断轮询服务器),这正是node.js擅长的。
传统的ajax调用要求客户端轮询服务器以获取数据。这会对客户端和服务器都产生巨大的开销。允许服务器直接向客户端推送请求,而不是客户端反复询问,可以解决开销问题并创建更响应的界面。这是通过在服务器上保持异步客户端连接并仅在服务器有可响应内容时才返回来实现的。服务器响应数据后,立即创建另一个连接,并再次由服务器持有,直到准备好发送数据为止。
您可能也可以使用PHP来实现相同的功能,但我不太熟悉PHP和Comet类型的应用程序。
用户数量和托管成本将影响您的文件与数据库选项。如果您计划拥有超过几个用户,建议使用数据库。虽然有一些NoSQL选项可用,但根据我的经验,MySQL比这些选项更快且更可靠。
祝您的项目成功!
http://en.wikipedia.org/wiki/Comet_%28programming%29
http://zenmachine.wordpress.com/2010/01/31/node-js-and-comet/
http://socket.io/ - 抽象出基于客户端能力的通信层(长轮询, WebSockets等)
MySQL 和 XCache !!!!
确保使用预定义语句,这样 MySQL 就不需要再次编译 SQL。此外,可以使用 memtables 来使用内存存储。
当然,适当地利用索引。
如果“gamestate”不是很重要,甚至可以将所有内容存储在 XCache 中。 请记住,XCache 不会持久存储数据(在 Apache 重新启动后)。