这对于 Web 浏览器提供的 API 来说是不可能的(正如其他人所说,您需要使用 Socket.IO 之类的东西并通过服务器进行通信)。幸运的是,由于你使用的是 TideSDK,所以只要你对网络效率的要求不高就可以。您将需要提供一个服务器,但它不必强大到足以承载实际游戏。
通用客户端和服务器方法
还有其他组织网络的方法,但如果您认为它们更容易实现,可以查找它们。
您的服务器将托管实际的游戏下载并提供配对功能。人们下载的客户端会联系这个匹配服务器来寻找其他想玩的人。
匹配服务器应选择其中一个客户端作为其他客户端的主机。最后,匹配服务器将告诉被选为主机的客户端它是主机,并给它每个人的连接信息(端口和 IP 地址),同时向其他客户端提供所选主机的连接信息。主机将连接到其他客户端。
主机将是唯一真正对游戏进行任何处理的计算机,而其他客户端仅显示主机发送给它们的任何信息。客户端在他们各自的计算机上从每个玩家的角度呈现游戏的当前状态,并捕获用户输入,然后将其发送到主机进行处理。
执行
TideSDK 提供了一个Ti.Network.TCPSocket对象,它可以使原始 TCP 客户端连接到 TCP 服务器。不幸的是,它也没有提供制作原始 TCP 服务器的方法。相反,TideSDK 提供了一个Ti.Network.HTTPServer对象,它实现了基于 TCP 的 HTTP 协议服务器,以及一个Ti.Network.HTTPClient对象,它提供了一个 HTTP 客户端(它实际上只是对普通 AJAX 请求 API 的抽象)。您可以在主机上使用提供的 HTTP 服务器,并使用提供的 HTTP 客户端在客户端上直接连接到它。数据将使用 HTTP 协议进行交换。据我所知,这是您在这里唯一的选择。
我没有找到任何示例代码(除了 TideSDK 文档中的内容),但如果您真的感兴趣,您可能会找到一些示例代码。
下一步
如果我想继续使用 TideSDK,我会执行以下操作:
- 告诉 TideSDK 的开发人员您对 TCP 服务器套接字感兴趣。原始 TCP 连接将比 HTTP 快得多。
- 测试 HTTP 连接,看看它对我的游戏来说是否足够快。