2013-08-19 3 views
4

이 질문은 너무 광범위 할 수 있지만 질문하는 것이 옳은 질문이라고 생각합니다. 어떻게 처리해야할지 모르겠습니다.node.js 웹 서버 및 C++ 게임 서버

현재 example.com 웹 사이트를 호스팅하고 있습니다. 현재 100 % node.js를 사용하고 있습니다. 또한 socket.io을 사용하는 네트워크로 연결된 HTML5 게임 (game.example.com)을 호스팅하고 있습니다. 환상적이지만 C++ (또는 잠재적으로 Java)를 사용하여 게임 서버를 처리하고 자바 스크립트에서 서버 로직을 번역.

현재 가장 큰 문제는 WebSocket을 연결하는 방법을 모르겠다는 것입니다. 나는 여전히 node.js를 사용하여 전체 클라이언트 (HTML 및 JavaScript)를 제공 할 계획이지만 node.js 서버가 아닌 C++ 서버에 클라이언트를 연결하려고합니다.

현재 서버에 연결하는 방법은 단순히 socket.io의 io.connect();에서 얻은 소켓을 사용하는 것입니다. 이 문제가 해결 될 수 있다고 생각합니다. 서버 측 소켓을 node.js에서 C++ 프로그램으로 전달하면됩니다.이 작업을 수행하는 방법을 전혀 알지 못합니다.

아무도 도와 줄 수 있습니까?

+0

이것은 오래된 것이지만 nodejs에서 C++로 마이그레이션하려는 이유를 간단히 언급 해주십시오. 천천히? – Syd

+0

하하, 이거 오래된가요? 정확한 이유는 기억이 나지 않지만 애완 동물 프로젝트 였으므로 아마도 C++을 연습하고 싶었을 것입니다. –

+0

Okies, thnx 나는 nodej에 게임 서버를 작성하는 것에 대해 생각하고 있었고이 게시물에 올랐다. 그래서 나는 당신에게 묻기를 생각했다 : – Syd

답변

5

올바르게 이해한다고 가정하면 노드가 일반 HTTP 요청을 처리하지만 Websocket 요청을 C++ 서버에 전달하려고합니다. 업그레이드 요청을 위해 노드에서 프록시를 사용해보십시오 :

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); 
2

먼저 클라이언트를 C++ 서버에 직접 연결하는 옵션이 있습니다. 예를 들어 socket.io 전송이 웹 소켓 인 경우 http://libwebsockets.org (서버 측에 대해 C++ 웹 소켓 라이브러리)을 사용할 수 있습니다.

그렇지 않으면 클라이언트가 node.js 서버에 socket.io를 연결하고 C++ 서버와 node.js 서버간에 간단한 통신을 설정할 수 있습니다. "socket.io를 C++ 서버에서 처리"하려고하지 마십시오. 단순히 C++ 서버와 node.js 서버가 서로간에 통신하여 플레이어의 상태에 대해 앞뒤로 메시지를 전달하도록합니다. C++은 논리를 처리합니다 node.js는 실제 송수신을 수행합니다. 예를 들어, 간단한 TCP 소켓을 사용하여이를 수행 할 수 있습니다.