node.js webserver和C ++游戏服务器

这个问题可能过于宽泛,但我认为这是一个体面的问题,我不知道如何处理它。

我目前在example.com上托pipe一个网站。 我现在正在使用100%的node.js。 我还在使用socket.io托pipe一个networking化的HTML5游戏(在game.example.com上),这很棒,但是我决定使用C ++(或者可能是Java)来处理游戏服务器,计划从JavaScript翻译服务器逻辑。

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

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

谁能帮我?

假设我正确地理解了你,你希望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); 

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

否则,您可以让您的客户端将socket.io连接到您的node.js服务器,并在您的C ++服务器和node.js服务器之间build立一些简单的通信。 不要尝试“把socket.io传递给C ++服务器”:只需要C ++服务器和node.js服务器之间进行通信,来回传递消息,关于播放器的状态:C ++将处理逻辑,node.js会做实际的发送和接收。 你可以做到这一点,例如,一个简单的TCP套接字。