闪存套接字,点对点功能

时间:2011-08-03 03:21:13

标签: flash node.js p2p red5 rtmfp

快速介绍:我们已经完成了一个flash tetris游戏,我们希望为游戏添加多人游戏功能。经过几天对闪存和插座功能的研究,我变得更加困惑。一个快速的免责声明,我是一般的插座/网络新手。

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

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

3 个答案:

答案 0 :(得分:2)

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甚至没有公开列出价格。您唯一的选择是适用于AWS的FMS4,但它也很昂贵:adobe media server 4 cost with amazon?

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

d)对于某些用户,RTMFP无法正常工作

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

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