zoukankan      html  css  js  c++  java
  • 即时通信(RPC)的Rtmp实现配置篇

    step 1: 首先要确定RTMP的端口,可以利用netstat -an来查看

    step 2: 修改services-config.xml,确保有rtmp的相关节点:

    <channel-definition id=
    "my-rtmp"class
    =
    "mx.messaging.channels.RTMPChannel"
    >
     <endpoint uri=
    "rtmp://{server.name}:8323"class
    =
    "flex.messaging.endpoints.RTMPEndpoint"
    />
     <properties>
      <idle-timeout-minutes>20</idle-timeout-minutes>
     </properties>
    </channel-definition>

    step 3: 在网站新建apps目录,并添加MyChatRoom文件夹作为应用程序目录

    step 4: 定义MyChatApp类继承自FluorineFx.Messaging.Adapter.ApplicationAdapter,并定义供客户端调用的方法GetResult()

    step 5: 在应用程序目录(MyChatRoom)里添加配置文件app.config,内容如下:

    <?xml version=
    "1.0"
     encoding=
    "utf-8"
    ?>
    <configuration>
     <application-handler type=
    "ServiceLibrary8.MyChatApp"
    />
    </configuration>

    step 6: 新建Flex项目,分为 连接rtmp 和 调用方法 两部分来实现

    服务器端:

    using System;
    using System.Collections.Generic;
    using System.Text;
    using FluorineFx.Messaging.Adapter;
    namespace ServiceLibrary8
    {
        
    public class
     MyChatApp : ApplicationAdapter
        {
            
    public
    string GetResult(string name, int age)
            {
                
    return
     name + 
    " is "
     + age + 
    " years old"
    ;
            }
        }
    }

    Flex端:

    <?xml version=
    "1.0"
     encoding=
    "utf-8"
    ?>
    <mx:Application xmlns:mx=
    "http://www.adobe.com/2006/mxml"
     layout=
    "absolute"
    >
     <mx:Button x=
    "211"
     y=
    "69"
     label=
    "连接RTMP"
     click=
    "onConnectClick()"
     />
     <mx:Button x=
    "190"
     y=
    "113"
     label=
    "调用RTMP提供的方法"
     click=
    "onFunctionClick()"
     />
     <mx:Label id=
    "lblResult"
     x=
    "230"
     y=
    "31"
     text=
    "Label"
    />
     
     <mx:Script>
      <![CDATA[
       
    import
    mx.rpc.events.ResultEvent;
       
       
    private var
    nc:NetConnection;
       
       
       
    private function
     onConnectClick():
    void
       {
        nc = 
    new
    NetConnection();
        nc.connect(
    "rtmp://localhost:8323/MyChatRoom"
    );
        nc.addEventListener(NetStatusEvent.NET_STATUS, netStatus);
        nc.client = this;
       }
       
       
    private function
     netStatus(event:NetStatusEvent):
    void
       {
        
    var
    strCode:String = event.info.code;
        
    if
    (strCode==
    "NetConnection.Connect.Success"
    )
        {
         
    this
    .lblResult.text = 
    "连接RTMP成功!"
    ;
        }
        else
        {
         
    this
    .lblResult.text = 
    "连接RTMP失败!"
    ;
        }
       }
       
       
    private function
     onFunctionClick():
    void
       {
        
    var
    responder:Responder = 
    new
    Responder(onResult,onError);
        nc.call(
    "GetResult"
    ,responder,
    "袁承志"
    ,20);
       }
       
       
    private function
     onResult(result:String):
    void
       {
        
    this
    .lblResult.text = 
    "方法返回结果:"
     + result;
       }
       
       
    private function
     onError(event:Event):
    void
       {
        
    this
    .lblResult.text = 
    "调用方法失败!"
    ;
       }
      ]]>
     </mx:Script>
     
    </mx:Application>
  • 相关阅读:
    python json 和 pickle的补充 hashlib configparser logging
    go 流程语句 if goto for swich
    go array slice map make new操作
    go 基础
    块级元素 行内元素 空元素
    咽炎就医用药(慢性肥厚性咽炎)
    春季感冒是风寒还是风热(转的文章)
    秋季感冒 咳嗽 怎么选药
    解决IE浏览器“无法显示此网页”的问题
    常用的 css 样式 记录
  • 原文地址:https://www.cnblogs.com/CoderWayne/p/1777901.html
Copyright © 2011-2022 走看看