1

快速介绍:我们已经完成了一个 Flash 俄罗斯方块游戏,我们正在寻求为游戏添加多人游戏功能。经过几天对闪存和套接字功能的研究,我变得更加困惑。一个快速的免责声明,我一般是套接字/网络的新手。

根据我在网上收集的信息,由于现有的策略系统,一般的 flash tcp 套接字无法处理对等连接。为了让 flash 进行 p2p,必须使用支持 RTMFP 的服务器(例如 flash 媒体服务器等)来处理初始握手,并且从那里,flash 能够以 p2p 方式传递数据。

编辑:有关该问题的全面更新,请参阅第一个答案。

4

3 回答 3

2

1) 对于套接字策略,请使用我的 Perl 脚本或 Apache 模块(两者都运行良好):http ://code.google.com/p/mod-socket-policy/ - 它将为连接到端口 843 的客户端提供服务。

但这还不够,因为防火墙/代理后面的企业用户无法连接到端口 843,因此您还需要将套接字策略处理添加到您自己的服务器代码中(即响应传入的 <policy-file-request/> \0个请求)。

2) 对于 RTMFP - 不要这样做,因为:

a) Cirrus 不是一个选项,因为它是测试版,不用于商业用途。FMS4似乎已经过时了,那么它要停产多久呢?

b) Flash Media Server 4 选项非常昂贵。对于企业版(RTMFP 需要),Adobe 甚至没有公开列出价格。您唯一的选择是适用于 AWS 的 FMS4,但它也很昂贵:adobe media server 4 cost with amazon?

c) 有一个 RTMFP 的 OSS 项目,但还没有准备好:OpenRTMFP Cumulus

d) 对于某些用户 RTMFP 不起作用

所以我的建议是使用适用于所有用户的 RTMP/RTMPT,包括。公司的并为此使用 Red5:http ://red5.org/

于 2011-08-04T08:00:30.310 回答
1

Red5 不支持 RTMFP。您将在 adobe 网页上获得 Flash Media Server 的价格。

于 2011-08-03T09:31:39.450 回答
0

Adobe Labs 上有一项名为Cirrus的技术。它是完全免费的,除了执行初始握手的常规服务器(php、ruby ...)之外,您不需要运行特殊的服务器(常规的 http 请求应该这样做)。

所以,如果你有前任。想要一起玩的 2 个玩家,第一个获得他的 Cirrus-id,将其传递到您的服务器,并且该值存储在“可用玩家”银行中。当第二个客户端连接时,服务器会检查银行并将该 ID 返回给第二个玩家,反之亦然。最后,两个 flash-player 客户端通过 rtmfp 建立直接连接。还有一篇文章更详细地解释了这一切。

于 2011-08-03T13:00:20.720 回答