[英]MMO WebSocket Server: Node.js or C++?
我一直在考慮使用WebSockets為網絡制作實時游戲。 我知道如何使用Node.js,並且很容易在那里使用它。 但在我看來,C ++似乎是流行的服務器語言,因為它的速度。
我應該在Node.js中制作它,然后再擔心C ++,或者我現在應該學習C ++並從頭開始學習它?
如果您決定采用C ++路由(並且確實提供了所有語言的最佳性能),那么這個偉大的開源Websocket庫可以為您完成所有繁重的工作。 它的標題僅使用提升。 它附帶示例代碼和文檔: http : //vinniefalco.github.io/
這是一個向echo服務器發送消息的完整程序:
#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的谷歌V8引擎可以很好地編譯有效的機器代碼。 除了內存/垃圾收集所需的特別注意之外,Javascript在游戲中使用的性能足夠好。 , 這導致很多原生C ++ PC游戲被轉換成瀏覽器javascript游戲 。 (值得注意的是,簡陋的捆綁了一個“Mozilla Bundle”,其中有很多這些轉換過的JS游戲,包括“AaaaaAAaaaAAAaaAAAAaAAAAA !!!”,“FTL”等)
使用Node.js和socket.io創建了許多實時游戲服務器。 使用node和socket.io運行基本的websocket服務器很容易,因此您應該能夠快速構建原型服務器,並進行一些性能測試,以確定它是否足以滿足您的應用程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.