• 即时通信(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>
  • 相关阅读:
    变量的解构赋值 (1)对象
    变量的解构赋值 (1)数组
    const 命令
    let 命令
    【BZOJ3295】[Cqoi2011]动态逆序对 cdq分治
    【BZOJ3771】Triple 生成函数+FFT
    【BZOJ4976】宝石镶嵌 DP
    【BZOJ4972】小Q的方格纸 前缀和
    【BZOJ4998】星球联盟 LCT+并查集
    【BZOJ4710】[Jsoi2011]分特产 组合数+容斥
  • 原文地址:https://www.cnblogs.com/CoderWayne/p/1777901.html
Copyright © 2020-2023  润新知