MMO WebSocket服务器:Node.js还是C ++?

我一直在想用WebSockets做一个实时的networking游戏。 我知道如何使用Node.js,而且很有诱惑力。 但在我看来,C ++由于其速度似乎成为stream行的服务器语言。

我应该把它放在Node.js中去,以后再担心C ++,还是现在应该学习C ++,并从头开始学习C ++?

如果你决定去C ++路线(这确实提供了任何语言的最佳性能),这个伟大的开源Websocket库,为你做了所有繁重的工作。 它的头只,并使用只是提升。 它带有示例代码和文档: http : //vinniefalco.github.io/

这是一个完整的程序,它发送消息到回显服务器:

#include <beast/websocket.hpp> #include <beast/buffers_debug.hpp> #include <boost/asio.hpp> #include <iostream> #include <string> int main() { // Normal boost::asio setup std::string const host = "echo.websocket.org"; boost::asio::io_service ios; boost::asio::ip::tcp::resolver r(ios); boost::asio::ip::tcp::socket sock(ios); boost::asio::connect(sock, r.resolve(boost::asio::ip::tcp::resolver::query{host, "80"})); using namespace beast::websocket; // WebSocket connect and send message using beast stream<boost::asio::ip::tcp::socket&> ws(sock); ws.handshake(host, "/"); ws.write(boost::asio::buffer("Hello, world!")); // Receive WebSocket message, print and close using beast beast::streambuf sb; opcode op; ws.read(op, sb); ws.close(close_code::normal); std::cout << beast::debug::buffers_to_string(sb.data()) << "\n"; } 

用于Node.js的Google的V8引擎在编译有效的机器代码方面做得非常好。 除了在内存/垃圾收集方面需要特别注意之外,Javascript在游戏中的performance已经足够好了。 , 这导致很多原生的C ++ PC游戏被转换成浏览器的JavaScript游戏 。 (特别是谦虚的捆绑包运行了一个“Mozilla Bundle”,其中有许多这些转换的JS游戏,包括“AaaaaAAaaaAAAaaAAAAaAAAAA !!!”,“FTL”等)

很多实时游戏服务器都是使用Node.js和socket.io创build的。 使用node和socket.io运行一个基本的websocket服务器是很容易的,所以你应该能够快速的build立一个原型服务器,并且做一些性能testing,看它是否足够你的应用程序。