24

我正在尝试创建一些简单游戏的基本实现(井字游戏是起始项目),这些游戏可以在互联网上播放而无需中央服务器。该页面甚至不需要托管,可以在机器上本地运行,也可以托管在 Web 服务器上。托管游戏时,页面会通知主机他的 IP 地址,然后可以通过任何方式(电话、即时消息等)将其发送给朋友。该朋友将输入或复制/粘贴 IP 到加入对话框中,并能够玩有问题的游戏。我希望这两方能够在不安装任何其他软件且不联系任何类型的中央服务器的情况下做到这一点。

我研究了许多潜在的解决方案,涉及 node.js、webrtc、websockets、flash、java 等。每一个都有与之相关的问题,例如需要中央服务器,或者要求客户端可能必须下载一些东西尚未安装在他们的计算机上,或者仅传输音频和视频并且对发送数据消息没有用处。告诉某人他们需要下载 java.. 或者让我使用 flash 开发应用程序似乎微不足道,但这一切都与我的最终目标背道而驰。

如果完全用javascript做我想做的事情是不可能的,那么它就是不可能的。但我不明白为什么不能,考虑到浏览器本身能够向解析为 IP 或直接解析为 IP 的 URL 发送和接收文本数据。欢迎使用其他解决方案,但如果无法做到这一点,那确实应该这样做。

我正在尝试做的确切要求的简单解释是:

  1. 应该使用完全免费的(如啤酒)技术。(没有 Flash,我意识到 Flash 播放器的网络应用程序可以免费编码,但层中的点对点需要注册一个 beta 密钥,假设我可以免费获得,不一定永远免费。)

  2. 没有外部服务器或虚假的点对点。(同样在基于闪存或统一的解决方案中,只要您使用他们的中央服务器,就可以实现对等的模仿)

  3. 没有客户端下载(当然,大多数人都安装了 java 或 flash,但很多人没有,而且 java 下载量很大,对计算机文盲用户不友好。它甚至现在尝试安装工具栏。除此之外,许多我的用户根本不愿意下载任何东西,包括 java 或 unity。如前所述,它们有自己的与该项目相关的问题)

总之,如果 ajax 可以向指定的 IP 发送请求并监听响应.. 为什么我不能在纯 js 中获得简单的点对点消息传递?或者我可以吗?

我不需要托管完整的 Web 服务器或任何类型的单独应用程序或插件来发送和接收数据。

我错过了什么吗?

4

2 回答 2

19

在推荐了 pubnub 之后,我看了看那里并留下了部分印象。然而,我最终偶然发现了我正在寻找的令人难以置信的东西。RTCDataChannel 就是答案。这个网站终于表明我想要的都是可能的。浏览器对此功能的支持很小,但在不断增长,整个考验增强了我对浏览器社区对点对点应用程序日益增长的支持的信心。

于 2013-04-22T04:25:50.470 回答
0

总之,如果 ajax 可以向指定的 IP 发送请求并监听响应.. 为什么我不能在纯 js 中获得简单的点对点消息传递?或者我可以吗?

这是因为 ajax 请求必须由 HTTP 服务器处理,因此您仍然需要为每个客户端安装服务器。

说你想要

  1. 自由的
  2. 没有外部服务器
  3. 没有客户端下载

我会说,除了你切断其中一个要求之外,不可能归档所有这些要求。

我的建议是pubnub。这个解决方案仍然需要一个服务器并且它不是免费的(他们有一个免费的使用层)。但好在你有一个模拟的 p2p 连接,而不需要做服务器的事情,也不需要客户端下载。

于 2013-04-15T16:31:19.723 回答