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,用来显示操作结果

在第一帧上写入以下代码:

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可以运行了

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏王大锤

再谈RunLoop

1253
来自专栏张善友的专栏

依赖注入容器Autofac

在.NET上现在存在许多的依赖注入容器, 我也在实践中使用过Castle Windsor、StructureMap、Autofac 、Unity。这些容器的简要...

2459
来自专栏JavaEE

Java调用微信登录以及eclipse 远程调试前言:一、微信测试号的连接与申请:二、eclipse远程调试:总结:

3155
来自专栏跟着阿笨一起玩NET

ASP.NET WebApi 基于JWT实现Token签名认证(发布版)

2583
来自专栏Kubernetes

从源码解析kube-scheduler默认的配置

本文作为Kubernetes Scheduler源码分析的番外篇,补充一个方面的分析:从源码层面解析kube-scheduler的默认配置是怎么做的。 从头来看...

3236
来自专栏王大锤

再谈RunLoop

2884
来自专栏张善友的专栏

Windows 7上执行Cake 报错原因是Powershell 版本问题

在Windows 7 SP1 电脑上执行Cake的的例子 http://cakebuild.net/docs/tutorials/getting-started...

2069
来自专栏圣杰的专栏

ABP入门系列(10)——扩展AbpSession

源码路径:Github-LearningMpaAbp 一、AbpSession是Session吗? 1、首先来看看它们分别对应的类型是什么? 查看源码发现Ses...

3256
来自专栏高性能服务器开发

关于windows完成端口(IOCP)的一些理解(二)

1 不知道你是否记得前面中说过每消耗一个预先准备客户端的socket,就要补上一个。这个代码现在看来就应该放在连接成功事件里面了: DWORD ThreadFu...

4159
来自专栏高性能服务器开发

关于windows完成端口(IOCP)的一些理解(五)

系列目录 关于windows完成端口(IOCP)的一些理解(一) 关于windows完成端口(IOCP)的一些理解(二) 关于windows完成端口(IOCP)...

42111

扫码关注云+社区