簡體   English   中英

MMO WebSocket服務器:Node.js還是C ++?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM