【问题标题】:node.js webserver and C++ game servernode.js 网络服务器和 C++ 游戏服务器
【发布时间】:2013-08-20 18:30:37
【问题描述】:

这个问题可能太宽泛了,但我认为这是一个不错的问题,但我不知道如何处理。

我目前在 example.com 托管一个网站。目前,我正在使用 100% node.js 执行此操作。我还托管了一个使用 socket.io 的联网 HTML5 游戏(位于 game.example.com),这很棒,但我决定我宁愿使用 C++(或者可能是 Java)来处理游戏服务器,并且我计划从 JavaScript 转换服务器逻辑。

目前我最大的问题是我根本不知道如何连接 WebSocket。我仍然计划使用 node.js 为完整的客户端(HTML 和 JavaScript)提供服务,但我希望客户端连接到 C++ 服务器而不是 node.js 服务器。

我当前连接到服务器的方式只是使用从 socket.io 的io.connect(); 获得的套接字。我认为这可以保留,我只需要将服务器端的套接字从 node.js 传递给我的 C++ 程序,我完全不知道该怎么做。

谁能帮帮我?

【问题讨论】:

  • 这可能已经过时了,但请您简要介绍一下您想从 nodejs 迁移到 c++ 的原因吗?很慢吗?
  • 哈哈,这很老了吧?具体原因我不记得了,但那是一个宠物项目,所以我当时可能只是想练习 C++。
  • Okies,谢谢你的回答我正在考虑用 nodejs 编写一个游戏服务器并想出了这篇文章,所以我想问你:)
  • 我想说不在节点中编写游戏服务器的最大原因是它不是多线程的。这将取决于游戏,但大多数游戏服务器依赖一个或多个线程来运行游戏循环并分拆多个线程来与客户端通信。但是你完全可以使用 Node 和 setInterval 来完成它。希望对您有所帮助。

标签: c++ c node.js sockets websocket


【解决方案1】:

首先,您可以选择将您的客户端直接连接到您的 C++ 服务器。例如,如果您的 socket.io 传输是 websockets,您可以使用http://libwebsockets.org(用于服务器端的 C++ websockets 库)。

否则,您可以让您的客户端将 socket.io 连接到您的 node.js 服务器,并在您的 C++ 服务器和 node.js 服务器之间建立一些简单的通信。不要试图“将 socket.io 处理到 C++ 服务器”:只需让 C++ 服务器和 node.js 服务器在它们之间进行通信,来回传递关于玩家状态的消息:C++ 将处理逻辑,并且 node.js 将执行实际的发送和接收。例如,您可以使用简单的 TCP 套接字来做到这一点。

【讨论】:

    【解决方案2】:

    假设我理解正确,您希望 Node 处理常规 HTTP 请求,但您想将 Websocket 请求传递给您的 C++ 服务器?尝试在 Node 中使用代理来处理升级请求:

    var http = require('http'),
        httpProxy = require('http-proxy');
    
    //have your c++ server for websockets operating on port 1333
    var proxy = new httpProxy.HttpProxy({
      target: {
        host: 'localhost',
        port: 1333
      }
    });
    
    var server = http.createServer(function (req, res) {
        //handle normal requests in here
    });
    
    server.on('upgrade', function (req, socket, head) {
      // Proxy websocket requests...
      proxy.proxyWebSocketRequest(req, socket, head);
    });
    
    server.listen(80);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-09
      • 2013-11-12
      • 2014-05-06
      • 1970-01-01
      • 1970-01-01
      • 2018-02-06
      • 2013-02-01
      • 1970-01-01
      相关资源
      最近更新 更多