【问题标题】:Javascript client C++ server gameJavascript客户端C++服务器游戏
【发布时间】:2013-09-19 22:11:56
【问题描述】:

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

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

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

谁能指导我应该走哪条路?

【问题讨论】:

  • 如果你想提高性能,并且能够优化,你将不得不使用 socket.io 和 C++ 绑定到 node.js;不过不要太担心,在 node 中创建 c++ 绑定相当简单,您无需担心性能(V8 支持您)。
  • 您不能从 Web 浏览器执行 TCP。你只能做websockets。而且您必须在您的 c++ 服务器中实现 websockets,这非常困难。从技术上讲,您可以实现一个 chrome 应用程序,但您不能只将网络浏览器指向一个 url 来玩游戏。
  • 我建议只支持支持 WebSocket 的浏览器(后备方法很可能无法满足实时游戏的要求)并使用现有的独立 WebSocketServer c++ 实现作为基础(我会使用基于事件而不是基于线程的实现)。
  • 非常感谢您的所有建议!我想我会尝试使用 NODE.JS 生成 C++ 游戏服务器作为库,并在读取传入数据时将所有数据推送到它。我更喜欢 Socket.IO 的想法,因为它能够使用闪存套接字以及 websockets 和 AFAIK,它们都能够处理每秒 30 次数据交换的游戏节奏。谢谢你:)
  • 你好@Irav 解决这个问题的最后步骤是什么。我也陷入了类似的境地

标签: javascript c++ sockets socket.io


【解决方案1】:

你应该看看 websockify:

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

【讨论】:

  • 对于实时游戏我会避免这样的结构,因为它增加了一层额外的 tcp 缓冲和通过内核传输数据。
【解决方案2】:

您可以将游戏服务器本身设置为 HTTP 服务器。在大多数情况下,它可以只提供您的静态文件,但是当它收到 WebSocket 升级请求时,它可以根据需要进行处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-12
    • 2021-07-17
    相关资源
    最近更新 更多