闪存套接字,对等function

快速介绍:我们已经完成了一个Flash俄罗斯方块游戏,我们正在寻找添加多人游戏function。 在对闪存和sockets的function进行了几天的研究后,我感到更加困惑。 一个快速的声明,我是一般的sockets/networking新手。

从我在线收集的信息来看,由于策略系统的原因,一般的flash tcp套接字无法处理对等连接。 为了使闪存做p2p,必须使用支持RTMFP的服务器(例如闪存介质服务器等)来处理初始握手,并且从那里闪存能够以p2p方式传递数据。

编辑:查看问题的全面更新的第一个答案。

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

但是这是不够的,因为防火墙/代理服务器后面的公司用户 – 谁不能连接到端口843,所以你需要将套接字策略处理添加到你自己的服务器代码中(即响应传入的<policy-file-request /> \ 0请求)。

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

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

b)Flash Media Server 4选项非常昂贵。 对于企业版本(RTMFP所需),Adobe甚至不公开列出价格。 您唯一的select是AWS的FMS4,但也是昂贵的: 土坯媒体服务器4与亚马逊成本?

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

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

所以我的build议是使用适用于所有用户的RTMP / RTMPT, 公司的和使用Red5的: http : //red5.org/

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

Adobe实验室有一项名为Cirrus的技术。 它是完全免费的,你将不需要有特殊的服务器运行除了一个常规的(PHP,ruby…)将执行初步握手(一个普通的http请求应该这样做)。

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