Adobe的FMS真的是一個倍兒牛叉的技術!(至少Silverlight在"實時廣播"方面目前還沒有任何能超越FMS的迹象)
曾經盛極一時的tudou,ku6,第一視訊...等一大堆視訊分享類網站,幾乎都使用的是Adobe的FMS技術.
今天先來做一個最簡單的Hello World(例子出自FMS的官方文檔)
1.先建立一個FMS應用HelloWorld
進入FMS的預設安裝目錄: C:\Program Files\Adobe\Flash Media Server 3.5\applications
在這下面建立一個HelloWorld目錄即可
2.打開Flash Cs4,建立一個 Flash檔案(ActionScript3.0),儲存為"HelloWorld.fla"
拖二個按鈕到舞台上,命名為btnConn,btnDisConn;對應的label文本為:"連接配接到FMS","斷開與FMS的連接配接"
再拖一個Label到舞台上,命名為lblResult,用來顯示操作結果
在第一幀上寫入以下代碼:
import flash.net.NetConnection;
import flash.events.MouseEvent;
import flash.events.NetStatusEvent;
var nc:NetConnection;
//注冊事件
btnConn.addEventListener(MouseEvent.CLICK,btnConnClick);
btnDisConn.addEventListener(MouseEvent.CLICK,btnDisConnClick);
function btnConnClick(e:MouseEvent) {
if (nc==null) {
nc = new NetConnection();
nc.addEventListener(NetStatusEvent.NET_STATUS,connHandler);//每當連接配接狀态有變化時,會自動調用 connHandler
nc.connect("rtmp://localhost/HelloWorld");
lblResult.text="正在連接配接FMS...";
}
}
function btnDisConnClick(e:MouseEvent) {
if (nc!=null) {
nc.close();
nc=null;
}
}
function connHandler(e:NetStatusEvent) {
trace(e.info.code);
switch (e.info.code) {
case "NetConnection.Connect.Closed" :
lblResult.text="成功關閉連接配接";
break;
case "NetConnection.Connect.Failed" :
lblResult.text="連接配接嘗試失敗";
break;
case "NetConnection.Connect.Success" :
lblResult.text="連接配接嘗試成功";
var resp:Responder = new Responder(onReply);
nc.call("serverHelloMsg", resp, "Hi FMS!");//調用服務端的serverHelloMsg的方法
break;
case "NetConnection.Connect.Rejected" :
lblResult.text="連接配接嘗試沒有通路應用程式的權限";
break;
default :
lblResult.text=e.info.code;
break;
}
}
function onReply(e:Object){
trace("服務端傳回内容:" + e);
lblResult.text = e.toString();
}
上面示範了如何"連接配接到伺服器"、"斷開連接配接"、"調用服務端的方法",先不要急着運作,因為我們服務端的serverHelloMsg方法還沒寫呢
3.建立FMS服務端代碼
定位到C:\Program Files\Adobe\Flash Media Server 3.5\applications\HelloWorld 建立一個main.asc的文本檔案,寫入以下代碼
application.onConnect = function(client){
client.serverHelloMsg = function(helloStr){
trace(helloStr);
return "Hello, " + helloStr + "!";
}
application.acceptConnection(client);
}
服務端有二個特殊對象application,client;用來生成“應用執行個體”以及“對用戶端的引用”,注意服務端的trace(helloStr),我們知道Flash CS4中trace的資訊會顯示在flash輸出視窗中,而服務端沒有輸出視窗,輸出的資訊将會自動儲存到
C:\Program Files\Adobe\Flash Media Server 3.5\logs\_defaultVHost_\HelloWorld\_definst_\application.xx.log
儲存的内容類似下面這樣:
#Version: 1.0
#Start-Date: 2010-03-14 13:38:08
#Software: Adobe Flash Media Server 3.5.1 r516
#Date: 2010-03-14
#Fields: date time x-pid x-status x-ctx x-comment
2010-03-14 13:38:05 8152 (s)2641173 Hi FMS! -
好了,回到Flash Cs4中,按下Ctrl + Enter可以運作了
作者:菩提樹下的楊過