zoukankan      html  css  js  c++  java
  • 玩转Red5+Flex(3)—— Red5第一个例子之HelloWorld

     

    作者信息

    QQ: 1473773560

    Email: linxingliang198811@163.com

    说明:有问题可以留言,发邮件!


    版本说明:

           Flex 4 (Flash Build)

           Red5 1.0 

    ------------------------------------------------------—————————————————————————————

     

     

     

     

    3  Red5 第一个例子之HelloWorld

     

    3.1 HelloWorld 开发前指导


       不管在学习什么新技术,都离不开HelloWorld ,简单而经典。本技术也不例外,从HelloWorld 步步深入进行研究。在开发之前,先讲讲HelloWorld 的开发流程,主要包括服务端和客服端。Red5 程序主要是在服务端发布一个服务,供其他客户端进行访问,具体的步骤如下:

     

     Ø  Eclipse 编写客户端

     Ø  将编写的程序部署发布

     Ø  Flex 编写客服端

     

    接下来我们就按照这三大步进行开发。

     

    3.2 Eclipse 编写客户端

       Red5 服务端的开发类似于开发一个web project ,所以我们的工程基本上的架构跟web project 一样,需要如下几个文件WEB-IN,classes,web.xml ,lib… 具体的步骤如下:


    ²   Eclipse 新建一个Java Project

    新建一个Java Project ,取名为Hello_Red5 ,具体的步骤不多说,我想大家这一步都不应该有问题,待会会把整个文件结构放上。


    ²  新建目录文件

    刚才我们已经说了,我们实际开发的应该类似一个web project 才能够进行部署,当然一开始你也可以直接选择web project

     

      l  在根目录下新建WEB-INF 文件夹

           l WEB-INF 下新建classes 文件夹

           l  WEB-INF 下新建lib 文件夹

     

     新建文件夹的步骤应该是这样的:

    【点击工程】——【右键】——【 New 】——【 Folder 】——【输入文件名称即可】

    现在的文件结构应该是这样的:


     

    ²  设置字节码存放位置

    们知道用Eclipse 编写的java 代码默认情况下编译之后的 .class 字节码文件都是存放在bin 目录下,我们需要修改下,让它存放在WEB-INF 下的classes 文件下,具体步骤如下:

     

    【点击工程】——【右键】——【Build Path 】——【Configure Build Path 】——【在右边选择Source 菜单】——【在右下角就可以看到default outer folder, 点击Browse, 切换到

    WEB-INF/classes 】——【切换完成之后在输入框的值应该是: Hello_Red5/WEB-INF/classes

      

    关键的操作演示如下:

     


     

    ²  编写配置文件

    虽说标题是些编写配置文件,但是其实大部分配置都已经有现成的模板了,只需要你稍微修改下就可以了。那么模板在哪里可以找到呢?其实就在Red5 的安装根目录的 /doc/templates/myapp/WEB-INF 下的四个配置文件,

    分别是: log4j.properties red5-web.propertiesred5-web.xmlweb.xml 具体都是做什么用的,我们下节在进行讲解,这一节的主要目标是成功部署一个应用程序,细节的东西先不管。找到这几个配置文件之后复制到WEB-INF 目录下。

      

     

    现在的文件结构应该是这样的:


     

    ²  导入Red5.jar 文件

    Red5.jar 文件在Red5 安装根目录下。导入步骤:

    【点击工程】——【右键】——【Build Path 】——【Configure Build Path 】——【在右边选择Libraries 菜单】——【点击Add External Jars…

       关键步骤演示:


     

    注:有人导入jar 文件的时候,会选择这样的方式,就是先复制Red5.jar 文件,然后粘贴到lib 目录下,最后在Add Jars…, 这种方式也是可以的,应该来说这种方式还有更好,不

     

    会由于你改变了Red5 的安装路径就报错了。但是需要你注意的是:当你发布程序到Red5 服务器的时候,需要把lib 包下的Red5.jar 再删除掉,不删除的话是无法部署成功的,不

     

    然你可以试一试,要是成功的话,也麻烦你告诉我,或许我部署有问题了。那么你肯定会有这样的疑问,我们在开发的时候不是用到Red5.jar 文件里的类库了吗,现在删除了,

     

    那么它怎么还能运行呢?一开始我也是这么认为的。但是经过自己的各种尝试(谷哥和度娘好像没有查到相关的说明,要是有相关的文档说明的话,麻烦告诉我下。),发现当

     

    你将程序部署到Red5 进行发布的时候,它是读取了Red5 安装目录下的Red5.jar 的。

     

    ²  编写代码

    src 目录下先新建一个包: cn.app, 在新建的包下新建一个类,取名为Application, 代码如下:

     

     

     

     

    package cn.app;
     
    import org.red5.server.adapter.ApplicationAdapter;
     
    public class Application extends ApplicationAdapter{
       
        /**
         * 提供访问的方法,可以写多个,让客服端进行调用.
         * @param name
         * @return
         */
        public String login(String name){
           return "Red5 say:Hello,"+name;
        }  
    }
    
     

     

     

     

    java 代码跟普通java 代码没有什么区别,主要是该类继承了

    org.red5.server.adapter.ApplicationAdapter 类。

      

    现在的文件结构应该是这样的:

     


     

     

    ²  修改WEB-INF 下的配置文件

    我们说配置文件有模板,但是没有不用进行修改的模板吧,所以还是需要你手动的修改下配置文件,但是改动不大,不用担心。

     

    ²  red5-web.properties 文件

    webapp.contextPath=/myapp 修改为:

    webapp.contextPath=/Hello_Red5

    其中Hello_Red5 是你的工程名称。

     

    webapp.virtualHosts 配置的是虚拟主机地址,在此我们可以不进行修改。

     

    ²  red5-web.xml

    < bean id ="web.handler"

            class ="the.path.to.my.Application"

           singleton ="true" />

    修改为:

       < bean id ="web.handler"

            class ="cn.app.Application"

           singleton ="true" />

    注:修改的是你自己的class

       删除(或者注释掉):

    < bean id ="myhandler.service"

            class ="the.path.to.my.ServiceHandler"

           singleton ="true" />

      

    ²  web.xml

    < context-param >

           < param-name > webAppRootKey </ param-name >

           < param-value > /myapp </ param-value >

        </ context-param >

    修改为:

       < context-param >

           < param-name > webAppRootKey </ param-name >

           < param-value > /Hello_Red5 </ param-value >

        </ context-param >

    注:param-value 指向你的工程名称。

       删除(或者注释):

        < context-param >

            < param-name > log4jConfigLocation </ param-name >

            < param-value > /WEB-INF/log4j.properties </ param-value >

        </ context-param >

     

    < listener >    

    < listener-class > org.springframework.web.util.Log4jConfigListener

    </ listener-class >

    </ listener >

     

    < listener >  

    < listener-class > org.springframework.web.context.ContextLoaderListener </ listener-class >

    </ listener >

    注: ContextLoaderListener 代码是启动Sping 监听器的,按道理是不应该注释掉的,但是不注释掉的话,就会报错。我在网上查找了很多资料,甚至是英文网站都没有相关的说明,我是通过不断的尝试,才知道注释掉能够正常运行。我想应该是Red5 1.0 版本在conf 目录下就应该有启动Spring 监听器了(要是有人有知道的,请联系我)。另外两个主要是Log4j 日志的,要是不注释掉的话,需要加入Log4j.jar 文件。

       至此代码就开发完成了,那么就让我们小休息一会吧。

     

    温馨提示 :在开发的时候,我们发现每次编译完之后,都需要重新复制工程到Red5/webapps 进行部署,这样很是麻烦,一方面我们可以用ant 进行部署,但是实话说ant 我还真是不会,于是我就采用了偷懒的形式:把Eclipseworkspace 直接设置到Red5/webapps 下,这样每次更新就是更新了webapps 的数据了。主要还有就是在项目上线的时候,可以把src 下的源码删除了。

     

    3.3 部署发布程序

       革命尚未成功,我们仍需努力,让我们一起来见证奇迹吧。

    ²  部署程序

    程序的部署还是很简单的,说的直白点就是复制粘贴的过程。将我们编写的Hello_Red5 复制到Red5 的安装目录下的webapps 目录下。

    ²  发布程序

    发布程序就更easy 了,就是启动服务器的过程。进入到Red5 的安装目录,启动Red5.bat 文件。需要的注意的是,有可能之前就启动Red5 服务器了,但是当你重新发布程序的时候,需要你重新再启动。

    ²  测试程序是否发布成功

    本地的话,见文件夹【测试工具】。在网页的见附件,下载附件里的【Red5rtmp 是否能够连接工具--Angel 提供】。打开Main.html

    进行测试,演示图如下:

     

     

    3.4 Flex 编写客户端

       坚持就是胜利,马上就有葡萄可吃了。

    ²  新建一个Flex 项目

    打开开发工具,新建一个Flex 项目:【右键】——【新建】——【Flex 项目】,项目名称随意。

    ²  编写访问服务端的代码

    首先我们需要在启动程序的时候,就去连接客户端,如果连接成功的话,那么就将返回的数据弹出。

       启动文件mxml 文件的代码主要如下:

     

     

    <?xml version="1.0" encoding="utf-8"?>
    <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" creationComplete="init()"
                   xmlns:s="library://ns.adobe.com/flex/spark"
                   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
        <fx:Declarations>
            <!-- 将非可视元素(例如服务、值对象)放在此处 -->
        </fx:Declarations>
       
        <fx:Script>
            <![CDATA[
                import mx.controls.Alert;
                //程序加载完成执行的事件.
                private function init():void{
                   
                    //定义一个网络连接对象.
                    var nt:NetConnection = new NetConnection();
                   
                   
                    // 设置 连接 地址.
                    nt.connect("rtmp://127.0.0.1/Hello_Red5");
                   
                   
                    //连接成功失败监听--这个前期先不进行监听.利用这个自己可以开发一个 连接Red5的测试工具.
                   
                    //调用服务端的函数.
                    /* 
                        login: 方法的名称,在Application类进行声明。
                   
                        new Responder(loginHandler): 回应处理.
                       
                        Flex4:参数,多个参数就是再加上 逗号 ,在进行添加。这个参数是在 login方法定义的。
                    */
                    nt.call("login",new Responder(loginHandler),"Flex4");
                   
                }
               
               
                //函数处理.
                private function loginHandler(obj:Object):void{
                    Alert.show(obj+"");
                }
               
            ]]>
        </fx:Script>
       
       
       
    </s:Application>

     

    ²  运行应用程序

    右键运行应用程序,如果运行成功的话,在浏览器会弹出:

    Red5 say: Hello Flex4

     

     

     

     

     

     

     

  • 相关阅读:
    容器跨主机网络通信学习笔记(以Flannel为例)
    Kubernetes控制器Job和CronJob
    记一次使用Flannel插件排错历程
    Kubernetes控制器Deployment
    Kubernetes如何通过StatefulSet支持有状态应用?
    react18 来了,我 get 到...
    gojs 实用高级用法
    vuecli3 vue2 保留 webpack 支持 vite 成功实践
    calibre 报错 This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem. 解决
    unable to recognize "*.yaml": no matches for kind "RoleBinding" in version "rbac.authorization.k8s.io/v1beta1"
  • 原文地址:https://www.cnblogs.com/hehehaha/p/6147148.html
Copyright © 2011-2022 走看看