Flash/Flex学习笔记(10):FMS 3.5之Hello World!
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,用来显示操作结果
在第一帧上写入以下代码:
01
import
flash.net.NetConnection;
02
import
flash.events.MouseEvent;
03
import
flash.events.NetStatusEvent;
04
05
var
nc:NetConnection;
06
07
//注册事件
08
btnConn.addEventListener(MouseEvent.CLICK,btnConnClick);
09
btnDisConn.addEventListener(MouseEvent.CLICK,btnDisConnClick);
10
11
function
btnConnClick(e:MouseEvent) {
12
if
(nc==
null
) {
13
nc =
new
NetConnection();
14
nc.addEventListener(NetStatusEvent.NET_STATUS,connHandler);
//每当连接状态有变化时,会自动调用 connHandler
15
nc.connect(
"rtmp://localhost/HelloWorld"
);
16
lblResult.text=
"正在连接FMS..."
;
17
}
18
19
}
20
21
function
btnDisConnClick(e:MouseEvent) {
22
if
(nc!=
null
) {
23
nc.close();
24
nc=
null
;
25
}
26
}
27
28
29
function
connHandler(e:NetStatusEvent) {
30
trace
(e.info.code);
31
switch
(e.info.code) {
32
case
"NetConnection.Connect.Closed"
:
33
lblResult.text=
"成功关闭连接"
;
34
break
;
35
case
"NetConnection.Connect.Failed"
:
36
lblResult.text=
"连接尝试失败"
;
37
break
;
38
case
"NetConnection.Connect.Success"
:
39
lblResult.text=
"连接尝试成功"
;
40
var
resp:Responder =
new
Responder(onReply);
41
nc.call(
"serverHelloMsg"
, resp,
"Hi FMS!"
);
//调用服务端的serverHelloMsg的方法
42
break
;
43
case
"NetConnection.Connect.Rejected"
:
44
lblResult.text=
"连接尝试没有访问应用程序的权限"
;
45
break
;
46
default
:
47
lblResult.text=e.info.code;
48
break
;
49
}
50
}
51
52
function
onReply(e:
Object
){
53
trace
(
"服务端返回内容:"
+ e);
54
lblResult.text = e.toString();
55
56
}
上面演示了如何"连接到服务器"、"断开连接"、"调用服务端的方法",先不要急着运行,因为我们服务端的serverHelloMsg方法还没写呢
3.创建FMS服务端代码
定位到C:\Program Files\Adobe\Flash Media Server 3.5\applications\HelloWorld 新建一个main.asc的文本文件,写入以下代码
1
application.onConnect =
function
(client){
2
client.serverHelloMsg =
function
(helloStr){
3
trace
(helloStr);
4
return
"Hello, "
+ helloStr +
"!"
;
5
}
6
application.acceptConnection(client);
7
}
服务端有二个特殊对象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可以运行了