Luk*_*non 6 javascript c++ performance node.js server
我一直在考虑使用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";
}
Run Code Online (Sandbox Code Playgroud)
用于Node.js的谷歌V8引擎可以很好地编译有效的机器代码.除了内存/垃圾收集所需的特别注意之外,Javascript在游戏中使用的性能足够好.,这导致很多原生C++ PC游戏被转换成浏览器javascript游戏.(值得注意的是,简陋的捆绑了一个"Mozilla Bundle",其中有很多这些转换过的JS游戏,包括"AaaaaAAaaaAAAaaAAAAaAAAAA !!!","FTL"等)
使用Node.js和socket.io创建了许多实时游戏服务器.使用node和socket.io运行基本的websocket服务器很容易,因此您应该能够快速构建原型服务器,并进行一些性能测试,以确定它是否足以满足您的应用程序.