`

基于Flex的Flash聊天室的实现

阅读更多

1.简要介绍

用Red5有段时间了,知识总是零零碎碎的,不总结肯定是不行的,系统化学习,有系统化的知识,对于学精一门东西无疑是最好的一条路,而学习需要在不断的实践中得到提升,笔者在多余的时间里,做了一个最简单的聊天室作为精通Flash编程入门的实例。

 

聊天室功能很简单,无非就是实现大家进入聊天室发消息。实现这个功能,需要在Red5 端和Flex端都需要编码。

 

2.开发环境

1)Red5-0.9.1

2)FlexBuilder4.1

 

 

3.Flex端主要实现业务流程和界面的搭建,有两个文件:

1) 主文件:chat.mxml

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:s="library://ns.adobe.com/flex/spark"
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="500" minHeight="500" backgroundColor="#605A5A">
   
    <fx:Script>
        <![CDATA[
            import mx.controls.Alert;
           
            import org.flash.demo.chat.Chat; 
            private var chat:org.flash.demo.chat.Chat;
           
            protected function button1_mouseDownHandler(event:MouseEvent):void
            {
                //1.Hide the enter information
                nameInput.visible = false;
                nameLabel.visible = false;
                enterButton.visible = false;
                messageInput.visible = true;
                txtLog.visible = true;
                txtLog.height = 420;
                chat = new org.flash.demo.chat.Chat();
                //2.Begin to connect the Red5 server and at the same time show the status
                chat.connect(nameInput.text,onStatus);
                //3.Subscribe a fixed named stream
               
               
            }
            protected function sendMessage_mouseDownHandler(event:MouseEvent):void
            {
                //Alert.show("test");
                chat.broadcastMesssage(nameInput.text,messageInput.text,onBroadcastMessageResultSuccess,onBroadcastMessageResultError);
            }
           
            //Handle the connection
            private function onStatus(event:NetStatusEvent):void
            {
                switch (event.info.code)
                {
                    case "NetConnection.Connect.Success":
                        var joinedMessage:String = nameInput.text+" joined the chat room.";
                        chat.broadcastMesssage("",joinedMessage,onBroadcastMessageResultSuccess,onBroadcastMessageResultError);
                        sendMessageButton.visible = true;
                        //Alert.show("Connected Successfully...");
                        break;   
                }
            }
           
           
            private function onBroadcastMessageResultSuccess(obj:Object):void
            {
                //Alert.show("Success");
               
            }
           
            private function onBroadcastMessageResultError(obj:Object):void{
                //Alert.show("Error");
            }
        ]]>
    </fx:Script>
   
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
       
    </fx:Declarations>
    <s:TextInput x="251" y="214" width="219" height="35" id="nameInput"/>
    <s:Label x="125" y="222" text="Display Name:" fontSize="18" color="#2E7E9F" id="nameLabel"/>
    <s:Button x="275" y="276" id="enterButton" label="Enter Chat Room" width="171" height="37" chromeColor="#089CC1" fontSize="14" fontWeight="bold" mouseDown="button1_mouseDownHandler(event)"/>
    <s:Button x="308" y="470" id="sendMessageButton" label="Send" width="61" height="37" chromeColor="#089CC1" fontSize="14" fontWeight="bold" mouseDown="sendMessage_mouseDownHandler(event)" visible="false"/>
    <s:TextInput x="0" y="452" width="300" height="73" id="messageInput" text="" visible="false"/>
    <mx:TextArea x="10" y="10" width="602" height="177" id="txtLog" borderColor="#EDF968" borderStyle="solid" borderVisible="true" color="#0E0D0D" fontWeight="bold"   visible="false"/>
</s:Application>

 

2)聊天工具类:Chat.as

package org.flash.demo.chat
{
    import flash.events.NetStatusEvent;
    import flash.net.NetConnection;
    import flash.net.Responder;
   
    import mx.controls.Alert;
    import mx.controls.TextArea;
   
    import mx.core.FlexGlobals;

   
    public class Chat
    {
        private var nc:NetConnection;
        private var _serverURL:String = "localhost";
        private var _serverApplication:String = "chat";
       
        public function Chat()
        {
        }
       
       
        /**
         * Connect to the server and establish the connection
         *
         * @param:name
         * The identity who connect to the Red5 server
         *
         * @param:onStatus
         * The function name to handle the status of the connection
         *
         * */
        public function connect(name:String, onStatus:Function):void
        {
            nc = new NetConnection();
            nc.objectEncoding = flash.net.ObjectEncoding.AMF0;
            nc.client = this;
            nc.addEventListener(NetStatusEvent.NET_STATUS,onStatus);
            nc.connect("rtmp://" + _serverURL + "/" + _serverApplication,name);
        }
       
        /**
         * broadcast message to all the attendees
         *
         * @param:name
         * The identity who send the message
         *
         * @param: message
         * The content that to be sent to the server
         *
         * @param:onBroadcastMessageResultSuccess
         * The function name to handle the process when broadcast message successfully
         *
         * @param:onBroadcastMessageResultError
         * The function name to handle the process when broadcast message failed
         *
         * */
        public function broadcastMesssage(name:String, message:String,onBroadcastMessageResultSuccess:Function,onBroadcastMessageResultError:Function):void{
            this.nc.call("broadcastMessage",
                new Responder(onBroadcastMessageResultSuccess,onBroadcastMessageResultError)
                ,name,message);    
        }
       
        /**
         *
         * This function is used for receving the message pushed from the server
         *
         * */
        public function onReceiveMessage(name:Object,message:Object):void{
            //Alert.show("The received message from server is ====="+name+","+message);
            if(name == null||""==name){
                FlexGlobals.topLevelApplication.txtLog.data+="\n" +message;
            }else{
                FlexGlobals.topLevelApplication.txtLog.data+="\n" +name+":"+message;
            }
        }
       
    }
}

代码见附件Chat-Flex.zip

 

4.Red5端

Red5端提供API给Flex client调用,代码见附件Chat.zip。

 

分享到:
评论

相关推荐

    飞思卡尔智能车平台,基于 python+CNN实现识别道路图像类型,图像处理计算轨迹线

    【作品名称】:飞思卡尔智能车平台,基于 python+CNN实现识别道路图像类型,图像处理计算轨迹线 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】:飞思卡尔智能车平台,CNN识别道路图像类型,图像处理计算轨迹线 飞思卡尔智能车平台,基于 python+CNN实现识别道路图像类型,图像处理计算轨迹线 飞思卡尔智能车平台,基于 python+CNN实现识别道路图像类型,图像处理计算轨迹线 【资源声明】:本资源作为“参考资料”而不是“定制需求”,代码只能作为参考,不能完全复制照搬。需要有一定的基础看懂代码,自行调试代码并解决报错,能自行添加功能修改代码。

    计算机图形学之动画和模拟算法:Procedural Animation:布料模拟算法.docx

    计算机图形学之动画和模拟算法:Procedural Animation:布料模拟算法.docx

    毕设项目:基于Node+VUE后台管理系统

    毕设项目:基于Node+VUE后台管理系统 element-vue-node-mysql

    【上交所-2024研报】精达股份2024年第三季度报告.pdf

    行业研究报告、行业调查报告、研报

    【上交所-2024研报】宁波舟山港股份有限公司2024年第三季度报告.pdf

    行业研究报告、行业调查报告、研报

    springboot021基于Springboot+Vue校园周边美食探索及分享平台毕业源码案例设计.zip

    springboot021基于Springboot+Vue校园周边美食探索及分享平台毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。

    python021基于Python餐厅点餐系统vue前端分离毕业源码案例设计.zip

    python021基于Python餐厅点餐系统vue前端分离毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。

    计算机视觉领域中的卷积神经网络:从基础到实践

    内容概要:本文详细介绍了卷积神经网络(CNN)的基本原理、常用架构、训练技巧及其在实际项目中的应用。通过理论讲解、案例分析和项目实践,帮助读者全面理解和掌握CNN的关键概念和技术细节。具体涵盖了卷积层、池化层、全连接层的基本原理,常用的激活函数和损失函数,经典的CNN架构(如LeNet-5、AlexNet、VGGNet、ResNet),以及从数据加载到模型训练和评估的完整流程。 适合人群:计算机科学专业的学生、数据科学家和机器学习工程师,特别是对计算机视觉领域感兴趣的人群。 使用场景及目标:适用于初学者和有一定基础的技术人员,希望能够在理论和实践中深入了解并掌握CNN的应用,特别是在图像分类、目标检测和图像分割等领域。通过学习,能够独立设计和训练高效的卷积神经网络模型。 阅读建议:读者可以从头到尾系统学习,理解每个环节的原理和技术实现。结合提供的代码示例和项目实战练习,可以加深对理论知识的理解,并在实践中逐步提升技能。建议在实际项目中不断尝试和优化,以达到更好的效果。

    第18章 项目绩效域.pdf

    第18章 项目绩效域

    【创新未发表】Matlab实现天鹰优化算法AO-Kmean-Transformer-BiLSTM负荷预测算法研究.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手

    weixin049基于微信小程序校园外卖平台设计与实现+ssm后端毕业源码案例设计.zip

    weixin049基于微信小程序校园外卖平台设计与实现+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。

    低通滤波器HFSS仿真项目文件(配合低通滤波器博客)

    低通滤波器(Low-Pass Filter, LPF)是射频和微波系统中广泛使用的基本电路之一,主要用于抑制高频信号,允许低频信号通过。它在无线通信、雷达、信号处理等领域具有重要作用。本文基于HFSS仿真平台,设计并分析了一个低通滤波器,展示了从理论设计到电路仿真的全过程。 HFSS作为业界领先的电磁仿真工具,能准确模拟电磁场和微波电路的性能,因此是滤波器设计和优化的有效工具。本文通过仿真验证低通滤波器的频率响应特性,并分析其S参数和电磁场分布,进一步优化滤波器的设计以满足实际需求。 1、技术参数 截止频率fc=4 GHz; f=8 GHz时,损耗衰减大于20dB; 特性阻抗Z0=50 Ohm; 3dB等波纹 2、材料参数 选用板材为Rogers 5880,损耗正切0.0009 相对介电常数为2.2;厚度H=0.508 mm;

    安卓机型检测真实参数的应用 山寨机显示真实配置参数

    资源描述 安卓此应用后会识别到当前机型的真实参数。包含CPU 运存 存储以及分辨率等等

    【上交所-2024研报】明微电子2024年第三季度报告.pdf

    行业研究报告、行业调查报告、研报

    JavaWeb项目:基于jsp+servlet+mysql实现的旅游管理系统【源码+数据库】

    一、技术实现 servlet,jsp,mysql,面向对象编程 二、系统功能 旅游网站设计主要用于实现旅游景点信息管理,基本功能包括:主界面模块设计,用户注册模块,旅游景点模块,酒店预订模块,后台管理模块等。本系统结构如下: (1)主界模块设计: 首页效果、首页塞北人文、首页酒店信息、首页景点信息、自驾游路线 首页天气预报、在线留言、用户注册、首页后台登录 (2)用户注册模块: 用户注册完成后,经过管理员的审核以后方能成功登录。 用户注册成功以后,可以进行预订管理,个人信息管理以及旅游路线管理等功能 (3)旅游景点模块: 供用户快速便捷的搜索到自己想要的旅游景点信息。 景点信息展示、景点名称查询、旅游景点效果图,该部分风景的查询与显示。 (4)酒店预定模块: 客户登录,可以进行具体资料查看操作。 酒店详细信息、酒店预订、酒店预订成功、酒店预订成功列表展示。 (5)后台管理设计: 系统功能主要包括: 1.账号管理 2.用户注册管理 3.塞北人文添加模块 4.塞北故事管理模块。 5.塞北景点进行操作。 6.自驾游路线管理。 7.酒店信息管理模块。 8.留言板管理。 9.修改密码和退出登录

    weixin026基于微信的原创音乐小程序的设计与实现+ssm后端毕业源码案例设计.zip

    weixin026基于微信的原创音乐小程序的设计与实现+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。

    基于ssm框架+jsp+mysql实现的心理测评系统前后台管理系统【源码+数据库】

    一、项目简介 本项目是一套基于ssm心理测评系统前后台管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse 确保可以运行! 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值 二、技术实现 spring+springmvc+mybatis+jsp+jquery+css 三、开发运行环境 jdk1.8 Tomcat8及其以上版本 Mysql5.5及以上版本 四、系统功能 前台: 用户登录 教师登录 注册用户 注册教师 首页 心理文章 心理视频 心理测试 心灵树洞:留言,上传图片 个人中心 测试记录 错题本 后台: 个人中心 用户管理 教师管理 心理文章管理 心理视频管理 心灵树洞 系统管理 轮播图管理等功能 详见 https://blog.csdn.net/weixin_43860634/article/details/130687349

    【java毕业设计】汽车租赁系统源码(springboot+vue+mysql+说明文档).zip

    项目经过测试均可完美运行! 环境说明: 开发语言:java jdk:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse

    交易流水证明_用于材料证明_20241106_212352.zip

    交易流水证明_用于材料证明_20241106_212352.zip

Global site tag (gtag.js) - Google Analytics