javascript - 点对点,Javascript 游戏

标签 javascript p2p tidesdk

我正在为网页编写一个简单的 javascript 游戏。我将使用 tidesdk 将其转换为桌面。我想让不同机器上的玩家无需通过服务器进行通信。

  1. 一般来说这可能吗?这是套接字??您是否有使用 JavaScript 代码完成此操作的任何链接?
  2. TideSdk 可以吗?您知道使用 TideSdk 完成此操作的示例的任何链接吗?
  3. 玩家如何知道他们的机器的 IP 地址/端口,以便他们可以将其提供给其他玩家?

很抱歉,这些都是模糊和开放的问题,但我真的不知道从哪里开始寻找这些东西,因为我真的不知道我要找的东西叫什么。

...哦,如果可以的话,我不想使用任何第三方的东西。也许是 jquery 的插入。

最佳答案

这对于网络浏览器提供的 API 来说是不可能的(正如其他人所说,您需要使用 Socket.IO 之类的东西并通过服务器进行通信)。幸运的是,既然你用的是TideSDK,只要你对网络效率要求不高是可以的。您需要提供服务器,但它不必足够强大来托管实际游戏。

通用客户端和服务器方法

还有其他组织网络的方法,但如果您认为它们更容易实现,您可以查阅这些方法。

您的服务器将托管实际的游戏下载并提供配对功能。人们下载的客户端将联系此匹配服务器以找到其他想玩的人。

配对服务器应选择其中一个客户端作为其他客户端的主机。最后,匹配服务器将告诉被选为主机的客户端它是主机,并向其提供每个人的连接信息(端口和 IP 地址),同时向其他客户端提供所选主机的连接信息。主机将连接到其他客户端。

主机将是唯一一个实际执行任何游戏处理的计算机,其他客户端只显示主机发送给它们的任何信息。客户端从每个玩家的 Angular 在他们各自的计算机上呈现游戏的当前状态,并捕获用户输入,这些输入被发送到主机进行处理。

实现

TideSDK 提供了一个Ti.Network.TCPSocket可以与 TCP 服务器建立原始 TCP 客户端连接的对象。不幸的是,它也没有提供制作原始 TCP 服务器的方法。相反,TideSDK 提供了一个 Ti.Network.HTTPServer对象,它通过 TCP 实现 HTTP 协议(protocol)服务器,以及一个 Ti.Network.HTTPClient对象,它提供了一个 HTTP 客户端(它实际上只是对普通 AJAX 请求 API 的抽象)。您可以在主机上使用提供的 HTTP 服务器,并使用提供的 HTTP 客户端在客户端上直接连接到它。将使用 HTTP 协议(protocol)交换数据。据我所知,这是您唯一的选择。

我没有在那里找到任何示例代码(除了 TideSDK 文档中的内容),但如果您真的感兴趣,您可能会找到一些。

后续步骤

如果我想继续使用 TideSDK,我会执行以下操作:

  • 告诉 TideSDK 的开发人员您对 TCP 服务器套接字感兴趣。原始 TCP 连接比 HTTP 快得多。
  • 测试 HTTP 连接,看看它是否足够快以支持我的游戏。

关于javascript - 点对点,Javascript 游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16841402/

相关文章:

javascript - 处理使用 PeerConnection 时处理 ICE 候选人的过程?

javascript - 如何创建一个新窗口

javascript - 如何删除for循环中的索引值(即0)

javascript - 如何解决 JavaScript "not a function"错误

javascript - PNG 图像颜色在 Fabric.js 中不会改变

javascript - 设置 Canvas 缩放/缩放原点

javascript - 是否可以在 node.js 服务器上设置运行(服务器端)的 socket.io 客户端?

VB.net(点对点连接问题)

tidesdk - 有没有办法让 TideSDK 窗口在屏幕上居中?

tidesdk - 用tidesdk做一个可拖动的透明窗口