这个问题可能太宽泛了,但我认为这是一个很好的问题,我不知道如何处理。
我目前在example.com主持一个网站。目前,我正在使用100%的node.js来完成这个任务。我还主持了一个网络HTML5游戏(在game.example.com),它使用socket.io,这太棒了,但我决定使用C++ (或者可能是Java)来处理游戏服务器,并计划从JavaScript中转换服务器逻辑。
我目前最大的问题是,我根本不知道如何连接WebSocket。我仍然计划使用JavaScript为完整的客户端(HTML和node.js )服务,但我希望客户机能够连接到C++服务器,而不是node.js服务器。
我目前连接到服务器的方式只是使用从Socket.IO的io.connect();获得的套接字。我认为这是可以保留的,我只需要将服务器端的套接字从node.js传递到我的C++程序,我完全不知道如何做到这一点。
有谁可以帮我?
发布于 2013-08-19 09:52:14
假设我正确地理解了您,您希望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);发布于 2013-08-19 06:42:36
首先,可以选择将客户端直接连接到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套接字来实现这一点。
https://stackoverflow.com/questions/18305692
复制相似问题