- 浏览: 122108 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
zhouhaiyang88:
huang-tao 写道你好,在吗?请问,我启动Tomcat时 ...
ActiveMq-JMS简单实例使用tomcat -
xurichusheng:
huang-tao 写道你好,在吗?请问,我启动Tomcat时 ...
ActiveMq-JMS简单实例使用tomcat -
wgcooo:
javax.naming.NameNotFoundExcept ...
ActiveMq-JMS简单实例使用tomcat -
huang-tao:
你好,在吗?请问,我启动Tomcat时报如下错,是什么原因?= ...
ActiveMq-JMS简单实例使用tomcat -
Eric.Yan:
好文章,明天试一试
ActiveMq-JMS简单实例使用tomcat
先来看客户端fla的构成:
第一帧:登录界面
第一帧的代码:
import flash.events.MouseEvent;
|
import com.adobe.utils.StringUtil;
|
import utils.Alert;
|
|
stop(); |
|
var userName: String = "" ;
|
|
Alert.init(stage); |
|
btnLogin.addEventListener(MouseEvent.CLICK,btnLoginClick); |
|
function btnLoginClick(e:MouseEvent): void {
|
txtUserName.text = StringUtil.trim(txtUserName.text);
|
this .userName = txtUserName.text;
|
if ( this .userName.length<= 0 ){
|
Alert.show( "请输入用户名!" , null , 0xefefef , 0x000000 );
|
}
|
else {
|
gotoAndPlay( 2 );
|
}
|
} |
第二帧:聊天的主界面
代码:
import flash.net.NetConnection;
|
import flash.events.MouseEvent;
|
import flash.events.NetStatusEvent;
|
import flash.events.KeyboardEvent;
|
import utils.Alert;
|
import flash.ui.Keyboard;
|
|
stop(); |
|
var nc:NetConnection;
|
|
function init(): void {
|
nc = new NetConnection();
|
nc.client= new Object ();
|
//定义供服务端广播消息时需要的客户端函数(结合main.asc查看)
|
nc.client.showmsg = function (str: String ): void |
{
|
txtMsg.appendText(str + "\n" );
|
};
|
|
nc.addEventListener(NetStatusEvent.NET_STATUS,connHandler);
|
nc.connect( "rtmp://localhost/chat" ,userName);//注:这里的userName是在第一帧定义的
|
updateMsg( "正在连接服务器..." );
|
btnSend.addEventListener(MouseEvent.CLICK,btnSendClick);
|
|
txtSend.addEventListener(KeyboardEvent.KEY_DOWN,txtSendKeyDown);
|
|
} |
|
function txtSendKeyDown(e:KeyboardEvent): void {
|
if (e.keyCode == Keyboard.ENTER) {
|
btnSendClick( null );
|
}
|
} |
|
function btnSendClick(e:MouseEvent): void {
|
txtSend.text = StringUtil.trim(txtSend.text);
|
if (txtSend.text != "" ) {
|
nc.call( "sendmsg" , null ,txtSend.text);
|
txtSend.text = "" ;
|
}
|
else {
|
Alert.show( "请输入要发送的内容!" , null , 0xefefef , 0x000000 );
|
}
|
} |
|
function connHandler(e:NetStatusEvent) {
|
switch (e.info.code) {
|
case "NetConnection.Connect.Closed" :
|
updateMsg( "成功关闭连接!" );
|
break ;
|
case "NetConnection.Connect.Failed" :
|
updateMsg( "连接尝试失败!" );
|
break ;
|
case "NetConnection.Connect.Success" :
|
updateMsg( "服务器连接成功!" );
|
break ;
|
case "NetConnection.Connect.Rejected" :
|
updateMsg( "连接尝试没有访问应用程序的权限!" );
|
break ;
|
default :
|
txtMsg.appendText(e.info.code + "\n" );
|
break ;
|
}
|
} |
|
function updateMsg(msg: String ): void {
|
txtMsg.appendText(msg + "\n" );
|
} |
|
init(); |
服务端main.asc的处理(注:main.asc保存时,貌似只能选择为utf-8编码,否则运动时客户端一直连接不上)
application.onAppStart = function () {
|
trace ( "onAppStart" );
|
}; |
|
//新客户端连接时触发 |
application.onConnect = function (client, uName) {
|
trace ( "onConnect = " +uName);
|
client.UserName = uName;
|
application.acceptConnection(client); //允许客户登录,如果要对客户身份做验证,在此扩展即可
|
hellomsg= "系统信息:" +client.UserName+ " 进入聊天室" ;
|
application.broadcastMsg( "showmsg" ,hellomsg); //调用所有client的showmsg方法,并传递参数hellomsg(客户端的代码中,必须有对应的showmsg函数)
|
|
//定义服务端的sendmsg方法,以便客户端能调用
|
client.sendmsg = function (msg) {
|
mesg = client.UserName+ ": " +msg;
|
//每次client调用本方法后,服务器同步广播到所有client
|
application.broadcastMsg( "showmsg" ,mesg)
|
};
|
|
}; |
|
//有客户端断开连接时触发 |
application.onDisconnect = function (client) {
|
trace ( "onDisconnect =" +client.UserName);
|
hellomsg= "系统信息:" +client.UserName+ " 离开聊天室" ;
|
application.broadcastMsg( "showmsg" ,hellomsg)
|
}; |
application.onAppStop = function () {
|
trace ( "onAppStop" );
|
}; |
运行中的样子:
注:艾睿论坛上曾有一篇教程利用FMS的远程共享对象来创建聊天室,远程对象在编码上也许更简单,不过个人感觉性能不太理想(因为对于共享对象的广播是FMS自动的,完全不受控制,不管客户端想不想接收消息,都会被动接收消息),本文演示的是另一种常见做法(服务端可以有选择性的仅向某些Client发送消息),而且网上也有很多相关文章,只不过要么是收费的,要么是基于AS2.0的,今天用AS3.0整理出来,于已方便、与人方便。
源代码下载:http://cid-2959920b8267aaca.skydrive.live.com/self.aspx/Flash/FMSTxtChatBasicDemo.rar
后话:这个跟silverlight做的聊天室(基于scoket或wcf双工通讯)有什么不同呢? 答:silverlight做聊天室应用,往往需要开发者自己做一个(scoket) server端,而adobe的fms正好充当了这个角色,省去了这一步之后,程序员只需要把注意力集中在客户端和业务逻辑上即可,开发量大大缩减。
发表评论
-
Flash/Flex学习笔记(50):矩阵变换
2011-04-24 13:52 1163先回顾一下Silvelright中的矩阵变换[转]WPF中的M ... -
Flash/Flex学习笔记(49):背面剔除与 3D 灯光
2011-04-24 13:50 974今天继续:上一回Flash/Flex学习笔记(50):3D线条 ... -
Flash/Flex学习笔记(48):迷你滚动条ScrollBar
2011-04-24 13:46 1062先看最终效果: 整个swf最终不到4k, ... -
Flash/Flex学习笔记(46):使用TweenLite
2011-04-24 13:43 1676TweenLite是第三方出品的专用于各种缓动动画的类库,其性 ... -
Flash/Flex学习笔记(45):3维旋转与透视变换(PerspectiveProjection)
2011-04-24 13:41 1209Flash/Flex学习笔记:3D基础 里已经介绍了3D透 ... -
Flash/Flex学习笔记(44):3D线条与填充
2011-04-24 13:39 10973D线条:把上一篇中的3D坐标旋转示例稍做修改,用线把各个 ... -
Flash/Flex学习笔记(43):3D基础
2011-04-24 13:34 1143之前我们所做的动画都 ... -
Flash/Flex学习笔记(42):反向运动学(下)
2011-04-24 13:30 916先要复习一下三角函数与余弦定理: 对于直角三角形,三边长 ... -
Flash/Flex学习笔记(41):反向运动学(上)
2011-04-24 13:29 939先回顾上篇所说的"正向运动学":以人行 ... -
Flash/Flex学习笔记(40):正向运动学
2011-04-24 13:27 882所谓"正向运动学"通俗点讲就是把几个连接部 ... -
Flash/Flex学习笔记(39):万有引力与粒子系统
2011-04-24 13:26 723万有引用公式: 其中G为万有引力常数 var numP ... -
Flash/Flex学习笔记(38):动量守恒与能量守恒
2011-04-24 13:24 942动能公式: 动量公式: 动量守恒: 能量守恒: ... -
Flash/Flex学习笔记(37):坐标旋转
2011-04-24 13:23 1020坐标旋转是个啥概念呢? 如上图,(蓝色)小球 绕某一 ... -
Flash/Flex学习笔记(36):碰撞检测
2011-04-24 13:22 606碰撞检测基本上可能分为二类:对象与对象的碰撞检测、对象与点 ... -
Flash/Flex学习笔记(35):弹性运动续--弹簧
2011-04-24 13:21 766上一篇里演示的弹性运动加上摩擦力因素后,物体最终基本上都会比较 ... -
Flash/Flex学习笔记(34):弹性运动
2011-04-24 13:20 771动画中的弹性运动 从视觉效果上接近 物理经典力学中的单摆运 ... -
Flash/Flex学习笔记(33):缓动动画
2011-04-24 13:18 998缓动 与 匀变速 看上去很类似,但其实有区别: 匀变速的 ... -
Flash/Flex学习笔记(32):不用系统组件(纯AS3)的视频播放器--只有8.82K
2011-04-24 13:17 1270以前为了赶项目,利用系统组件制作过一款视频播放器(见Fla ... -
Flash/Flex学习笔记(31):自己动手实现一个滑块控件(JimmySilder)
2011-04-24 13:15 966先看最终的演示: 滑块条的应用实在太广泛了:mp3播放器中声 ... -
Flash/Flex学习笔记(30):如何正确监听Stage对象的事件
2011-04-24 13:13 1295如果想在一个自定义类中注册对stage对象的监听事件,然后在另 ...
相关推荐
2. **创建流**:在服务器端,通过FMS API创建一个或多个流,用于接收和发送音视频数据。 3. **捕捉与发送**:在客户端捕获用户的摄像头和麦克风输入,封装成RTMP数据包,然后发送到服务器。 4. **接收与播放**:...
【标题】:“FMS制作聊天室例子”是一个关于利用Flash Media Server(FMS)构建实时聊天室的应用示例。FMS是Adobe公司提供的一款强大的流媒体服务器,它能够支持实时的音频、视频通信以及数据共享功能,非常适合用来...
标题"Fms.rar_flex_flex and fms_fms_fms rtmp_fms flex"和描述中的关键词揭示了这个压缩包包含的是与Adobe Flex和Flash Media Server(FMS)相关的项目资源,主要用于创建一个实时通信应用,例如聊天室。Flex是一种...
- **应用创建**:通过FMS管理控制台,开发者可以创建应用程序,如聊天室,定义其功能和逻辑。 - **负载均衡**:对于高并发需求,可以设置负载均衡策略,分散流量到多个FMS实例。 4. **FMS开发** - **API接口**:...
【标题】中的“通过FMS实现时时视频...通过分析上述知识点,我们可以理解这个源码项目是如何利用Flash、Flex和FMS技术来构建一个实时视频聊天平台的。对于想要学习或改进此类应用的开发者来说,这是一个宝贵的资源。
Flex和FMS3是构建实时互动应用程序的强大工具,尤其适合创建在线聊天室这样的实时通信平台。这个源码和文档集合提供了详细的步骤和技术说明,帮助开发者理解如何利用这些技术实现一个功能完备的聊天室。 Flex是一种...
《FlashMediaServer3 视频流开发中文文档》是一份专为开发者准备的详细教程,主要聚焦于如何利用Adobe Flash Media Server 3 (FMS3)进行高效的视频流开发。Flash Media Server是Adobe公司推出的一款强大的实时媒体...
【标题】"FMS聊天室+AS3.0"是一个基于Adobe Flash Media Server (FMS) 和ActionScript 3.0开发的多人在线聊天室应用。这个标题表明了该源代码是用于创建实时、交互式的多用户通信环境,让用户能够通过网络进行文字或...
【标题】"简易聊天室flash多人聊天 FMS实现"揭示了这个项目的核心是构建一个基于Flash的多人在线聊天系统,采用FMS(Flash Media Server)作为后台技术来实现实时的通信功能。Flash是一种广泛应用于网页上的多媒体...
通过本文,我们将深入探讨FMS的核心功能,并展示如何将其应用于创建一个视频聊天平台,从而帮助初学者快速入门。 【知识点】: 1. **FMS基础**:FMS是一款基于Flash的流媒体服务器,它可以处理实时的音频、视频和...
【标题】"FMS.rar_flex_flex FMS_fms_site:www.pudn.com" 涉及的核心技术是Adobe Flash Media Server (FMS),它是一个强大的实时流媒体服务器平台,用于发布音视频内容、实时通信以及互动应用程序。这里与Flex一起...
总的来说,ASP+FMS语音聊天室是一个结合了前后端技术的实时通讯应用,它利用ASP处理后端逻辑,通过FMS提供高效的音视频流服务,从而实现流畅的在线聊天体验。在深入研究和使用这套系统时,开发者需要熟悉ASP编程、...
FMS是一个强大的实时流媒体服务器,它为开发者提供了创建实时交互式视频和音频应用程序的能力。在Web上,尤其是在 Flash Player 广泛支持的时代,FMS 是构建实时多媒体应用的首选平台。 【描述】中的反复提及"FMS, ...
Flex学习笔记概述 Flex是一种由Adobe开发的企业级富互联网应用(RIA)的表示层解决方案,其主要目的是提供高度交互和动态的用户体验。Flex的核心在于它的编程语言MXML和ActionScript(AS),这两种语言结合在一起,...
环境配置:flash+fms2.0+php+mySQL 1:php环境 推荐使用APMServ5.2.0 (一键配置php) 2:fms环境:fms2.0 登陆用户名:10001-10010 密码都是123456 不明白的可以进QQ群 本引擎QQ交流群:73944013 解压密码在包内的...
【标题】"AS3 + FMS3聊天室"是一个基于ActionScript 3(AS3)编程语言和Flash Media Server 3(FMS3)技术构建的在线聊天室应用。这个项目提供了一个简单但实用的平台,让多个用户可以实时交流分享信息。 【描述】...
Flex+FMS写的视频聊天,在本机亲测通过。但唯一不足得是在别的机子上连接不成功。我也不知道为什么。望有才之士能完善。huzhaohui1992@qq.com 如能完善,请给我邮箱一份,在下感激不尽。
【Flex视频聊天室】是一个基于Adobe Flash Media Server (FMS) 开发的在线交互平台,主要功能是提供实时的文本和视频通信。这个项目的核心技术是Adobe Flex,它是一种用于构建富互联网应用程序(RIA)的开发框架,...
本示例是关于如何利用Flash技术开发一个聊天室应用,特别是聚焦于ActionScript编程语言和语音聊天功能。以下是这个项目的关键知识点: 1. **Flash Media Server**:FMS是Adobe提供的服务器软件,它支持流式传输...