JavaScript客户端C++服务器游戏

3

我有一个问题,应该走哪条路。

我想通过网络浏览器开发实时在线游戏。

我想使用C++编写游戏服务器,并侦听TCP套接字。客户端游戏将使用JavaScript编写。唯一的问题是,我不知道如何使用TCP套接字将JavaScript与C++服务器通信。我考虑使用Socket.IO,但据我所知,此库没有选项只连接到真实的TCP服务器,推送字节并读取传入的字节。相反,我需要使用一些包装器,如Node.JS服务器,但我想避免使用它。

有人可以指导我应该选择哪条路吗?


如果你想要更高的性能并能够进行优化,你需要使用socket.io与C++绑定到node.js;不过不用担心,创建node中的C++绑定相当简单,而且你无需担心性能问题(V8会给你支持)。 - TenorB
你不能通过Web浏览器进行TCP。你只能使用Websockets。而且你必须在你的C++服务器中实现Websockets,这相当困难。从技术上讲,你可以实现一个Chrome应用程序,但你不能仅仅将Web浏览器指向一个URL来玩游戏。 - xaxxon
我建议只支持支持WebSocket的浏览器(备用方法很可能无法满足实时游戏的要求),并使用现有的独立WebSocketServer c++实现作为基础(在那里,我会使用基于事件而不是线程的实现)。 - t.niese
非常感谢所有的建议!我想我会尝试使用NODE.JS作为库生成C++游戏服务器,并在读取传入数据时将所有数据推送到它上面。我更喜欢Socket.IO的想法,因为它具有使用Flash套接字以及Websockets的能力,据我所知,它们都能够处理每秒30个数据交换的游戏节奏。谢谢 :) - lrav
1
你好 @Irav,请问解决这个问题的最后步骤是什么?我也遇到了类似的情况。 - Tejas
2个回答

1
你可以将游戏服务器本身作为HTTP服务器。大部分情况下,它只需要提供静态文件,但是当它收到WebSocket升级请求时,可以根据自己的需要进行处理。

0

你应该看一下websockify:

websockyfy是一个WebSocket到TCP代理/桥接器。这允许浏览器连接到任何应用程序/服务器/服务。有Python、C、Node.js和Ruby的实现。


对于实时游戏,我会避免使用这样的结构,因为它会增加一个额外的TCP缓冲层,并通过内核传输数据。 - t.niese

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接