目前有以下几种网页游戏服务器:
利用.asc通信文件访问其他高级语言,比如java,vc,.net等访问数据库 |
FMS用RTMP协议(实时消息传送协议),通过NetConnection连接到FMS服务器,并实时播放服务器的FLV文件,这种方式可以任意选择视频播放点(SEEK()),并不象HTTP方式需要缓存完整个FLV文件到本地才可以任意选择播放点,其优点就是在本地缓存里是找不到这个FLV文件的。其优点就是FLV不会缓存在客户端,FLV的保密性好,其缺点就是消耗服务器资源,连接始终是实时的。
FMS是一个open-socket的服务器技术,直到用户退出程序它才断开连接,你可以实时的播放声音、视频、文字、和其它媒体。
服务器端程序文件 .as.java.py |
SmartFoxServer基于socket 通信,数据传输格式可以为原始字符串,也可以为XML格式,当传输一些时效性很高的信息时,如多少赛车游戏中车的位置,可以用字符串形式,而对时效性要求不高的数据可以用XML格式。
客户端: 将开发包文件加入到flash工程中,调用已经写好的as 开发包(import it.gotoandplay.smartfoxserver.*),AS3的开发包包含了4个类,最重要的是SmartFoxClient,定义SmartFoxClient对象后,调用其中的函数与服务器端进行通信。
服务器端:服务器端的程序用JAVA编写,打开Start SmartFoxServer程序服务器开始运行。当服务器收到客户端发来的信息时,会调用在服务器程序所在相关文件目录中的文件,进行相关处理,将信息发回客户端。
服务器有Zone 和Room的概念,每一个连接到服务器的用户都会分到一个Zone的Room里,在同一个Room里的用户可以相互通信。游戏开发人员可以在Config.xml中按照标定的格式随意增加Zone和Room。在Zone 和Room中可以对游戏的服务器端进行设置,包括游戏的服务器端的文件所在的目录。当Room收到用户的请求时,会调用游戏文件进行处理,发回客户端。服务器端的文件可以用AS JavaPython三种语言编写,文件的框架已经写好了,使用时增加具体代码就可以了,AS和Python语言写的文件放在服务器目录下的Server\sfsExtensions文件中,Java写的文件放在Server\javaExtensions中。
3)Flash remoting技术:flash remoting是adobe公司专门为FLASH传输数据一种技术,它采用AMF格式(as3.0用的是AMF3格式,as2.0和as1.0用的是AMF0格式),AMF是Adobe独家开发出来的通信协议,它采用二进制压缩,序列化、反序列化、传输数据,从而为Flash 播放器与Flash Remoting网关通信提供了一种轻量级的、高效能的通信方式。
AMF最大的特色在于可直接将Flash内置对象,例如Object, Array, Date, XML,传回服务器端,并且在服务器端自动进行解析成适当的对象,这就减轻了开发人员繁复工作,同时也更省了开发时间。由于AMF采用二进制编码,这种方式可以高度压缩数据,因此非常适合用来传递大量的资料。数据量越大,Flash Remoting的传输效能就越高,远远超过WebService。至于XML, LoadVars和loadVariables(),它们使用纯文本的传输方式,效能就更不能与Flash Remoting相提并论了。
我们所说的其它语言实际上是web服务器语言,包括像ASP.NET、JAVA、PHP等(ASP不能使用),不同的语言有不同版本的remoting,Adobe官方有自己的remoting,但多数是收费的,我们要使用免费的,当然要使用开源产品。
我们常用的开源remoing通常有以下几种:
(1)ASP.NET-Fluorine(2)PHP-AMFPHP(3)JAVA-openAMF
flash remoting由两个部分组成,前端部分是用Flash+Flash remoting组件来开发,后台采用Flash remoting-gateway+任何一种后台技术。而Flash remoting-gateway现在有很多开发源码的实现方式。
我们使用不同平台的语言就要选择不同版本的remoting。其实最新版的Fluorine和AMFPHP都能使用AMF3,而OPENAMF由于没有新版本出来,只支持AMF0。
4)XMLSocket主要用于与服务端进行即时通信,目前的应用领域主要是Flash文本聊天和Flash在线游戏等方面。限于篇幅,这里不再过多解释socket的含义,只希望大家能记住一点,只要建立能够实时通信的应用程序就需要建立socket连接。
XMLSocket的优点:1、能和服务端即时通信;2、Flash Player 5.0以上的版本内置类,不需另装组件或插件;3、因为XMLSocket就是相当于一个Socket客户端,所以一般的中间件都支持的(如java,.Net等)
XMLSocket的缺点:1、XMLSocket只能传字符串或xml格式的文本,数据类型单一;2、XMLSocket服务端自行开发的话,需要对Socket技术比较了解才行,已经有的的服务端软件包括商业XMLSocketServer有Unity、Fortress;开源XMLSocketServer有OreganoMultiuserServer;3、还有就是XMLSocket的80端口与flash安全策略问题。(网上有一个解决方法,不知是否可行,请自行验证)
5)OS:Oregano Server是一款针对Flash客户端开发的多用户服务器软件.它是提供给用户免费使用的。相当于一款socket服务器引擎,由于它使用纯Java开发的,因此可以运行在许多的操作系统上面,例如:Windows,Linux和Mac OS X.
6)RED5:免费的FL服务软件,大约和FMS差不多。Red5是一个采用Java开发开源的Flash流媒体服务器。它支持:把音频(MP3)和视频(FLV)转换成播放流; 录制客户端播放流(只支持FLV);共享对象;现场直播流发布;远程调用。Red5使用RSTP作为流媒体传输协议,在其自带的一些示例中演示了在线录制,flash流媒体播放,在线聊天,视频会议等一些基本功能。
Red5+flash项目主要分为服务器端和客户端,服务器端用java,客户端用flash。两者通过connection对象连接。