7

我希望允许用户在我正在开发的多人游戏中玩 p2p,但要做到这一点,javascript 需要能够在浏览器中创建套接字服务器。这甚至可能吗?我不知道有任何 API 可以让客户端在 javascript 中连接到其他客户端。还有其他方法吗?喜欢使用隐藏的闪光元素?

我要求的东西根本不需要服务器。数据包需要直接从客户端传输到客户端

4

7 回答 7

6

这个问题很老了,但我现在可以给出一个答案:是的,终于有一种方法可以在浏览器之间进行 p2p 通信了!多亏了新标准WebRTC,现代浏览器才获得了对Data Channels的支持,这比 WebSockets 强大得多。

看看这里:

WebRTC 数据通道

在线示例:香蕉面包 3D是一款第一人称射击游戏,编译为 JS+WebGL,在多人模式下使用 WebRTC 数据通道:

BananaBread 3D多人在线fps游戏

于 2014-08-13T20:36:12.723 回答
6

简而言之,浏览器中的 p2p 是不可能的。

您可以获得的最接近的是使用 NodeJS(可能用于 p2p JS)或集中式服务器(或多个服务器)和 websockets(用于浏览器中的套接字)

于 2012-04-22T23:49:26.837 回答
4

有趣的问题,但可能是重复的:

我确信这不能仅使用 javascript(在每个浏览器中)来完成。根据 上述主题中关于 Stackoverflow 的另一个答案,您可能可以使用rtmfp-api执行此操作。

该项目通过隐藏的 Flash 小程序向 javascript 应用程序公开 Rtmfp 协议(由 Flash 版本 10 提供)。该协议允许多个客户端直接通信。有关该协议的更多详细信息,请参阅参考资料。

快速查看该站点,您仍然需要一个rtmfpUrl中间的服务器,我完全理解,因为客户端需要能够找到彼此(IP)。但我认为在那之后它将是p2p。快速搜索我还发现了开源 rtmfp-server(s)

我自己还没有尝试过,但我也许这会帮助你实现你的目标。

其他一些链接:

于 2012-04-23T00:03:41.523 回答
0

虽然这是一个购物问题,但我会研究 APE

http://www.ape-project.org/

至少你可以看看他们是如何构建它的。

于 2012-04-22T23:45:01.580 回答
0

为了实现这样的游戏,您的 JavaScript 客户端必须与服务器通信。然后服务器运行游戏逻辑,并将结果发送回客户端。

  • JavaScript 接收用户输入并将其发送到服务器
  • 服务器确保输入有效(以防止作弊)并使用新输入更新游戏
  • 服务器定期将游戏状态发送到 JavaScript(通过长轮询或让 JS 每隔一段时间请求它)。

基本上,永远不要相信来自 JavaScript 的任何东西,因为它非常容易修改。一切都应该在服务器端完成。

于 2012-04-22T23:46:58.257 回答
0

这是 mobl 的解决方案(但我还没有尝试过)。

http://zef.me/3391/moving-the-server-to-the-browser

于 2013-02-21T00:39:50.453 回答
0

可以使用 Flash 实现无服务器。这可以通过 Adob​​e Flash 的点对点功能实现。我曾经用它写了一个点对点聊天。缺点是 Actionscript 是一种垂死的语言,将来可能不会得到太多支持。

这是原始类。 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/NetGroup.html

如果您不想自己编写,这里有资源。 http://www.as3gamegears.com/category/multiplayer/

如果您想要在服务器端轻量级的服务器选项。试试这个 node.js 扩展。
http://socket.io/

我建议使用某种 java 套接字服务器。Electroserver 曾经是该领域的领导者之一,它有 Unity 支持并且可以扩展到数十万。虽然我认为他们已经陷入困境。Electroserver 站点有一段时间无法访问。我知道还有其他的,但 Electroserver 是我唯一使用过的。

于 2015-09-21T23:22:59.447 回答