·您当前的位置:首页 > 技术教程 > RED5教程 >

[RED5]red5服务器端与客户端实例聊天室源代码

时间:2014-03-26 08:42cuplayer.com
ED5]red5服务器端与客户端实例,[RED5]red5服务器端与客户端实例聊天室源代码

ED5]red5服务器端与客户端实例

  1. import org.red5.server.adapter.ApplicationAdapter; 
  2. import org.red5.server.api.IConnection; 
  3. import org.red5.server.api.IScope; 
  4.  
  5. import org.red5.server.api.Red5; 
  6. import org.red5.server.api.service.IServiceCapableConnection; 
  7. import org.slf4j.Logger; 
  8. import org.red5.logging.Red5LoggerFactory; 
  9. import java.util.*; 
  10.  
  11.  
  12. public class Application extends ApplicationAdapter 
  13.     private static Logger log = Red5LoggerFactory.getLogger(Application.class, "echat"); 
  14.  
  15.      /** 
  16.     15      * 每个新的客户端来连接的时候调用! 
  17.     16      * 这里我们覆盖了父类的实现。 
  18.     17      */ 
  19.     public boolean appConnect(IConnection con, Object[] params) 
  20.     { 
  21.         log.debug("new client connectting chat room");        
  22.         return true; 
  23.     } 
  24.     
  25.     /** 
  26.     * 当客户端断开连接的时候调用! 
  27.     * 这里我们覆盖了父类的实现。 
  28.     */ 
  29.     public void appDisconnect(IConnection conn) 
  30.     { 
  31.         log.debug(conn.getClient().getId() + " disconnect"); 
  32.     } 
  33.     
  34.     
  35.     /** 
  36.     * 加入聊天室,必须带上用户名,假如用户名为空,则不能发送消息,也不能收到消息。 
  37.     * @param params 客户端调用服务器端的参数。 
  38.     */ 
  39.     public void jionChatRoom(Object[] params) 
  40.     { 
  41.         String nickName = params[0].toString(); 
  42.         if (null == nickName || "".equals(nickName)) 
  43.         { 
  44.             return ; 
  45.         } 
  46.         else 
  47.         { 
  48.             // CuPlayer.com提示:设置用户昵称。 
  49.             IConnection conn = Red5.getConnectionLocal(); 
  50.             conn.setAttribute("nickName", nickName); 
  51.         } 
  52.     
  53.          // 发通知给聊天室的所有人,有新人加入了。 
  54.         IScope scope = Red5.getConnectionLocal().getScope(); 
  55.         Iterator it =   scope.getConnections().iterator(); 
  56.         int x = 0
  57.         for (;it.hasNext();) 
  58.         { 
  59.             Set connections = (Set)it.next(); 
  60.             IConnection tempConn = (IConnection)connections.iterator().next(); 
  61.             if (tempConn instanceof IServiceCapableConnection) 
  62.             { 
  63.                 IServiceCapableConnection sc = (IServiceCapableConnection) tempConn; 
  64.                 // CuPlayer.com提示:服务器端调用客户端flash方法。 
  65.                 sc.invoke("showJoinInInfo", new Object[]{nickName}); 
  66.             } 
  67.         } 
  68.     } 
  69.     /** 
  70.     * 给聊天室的所有人发送消息 
  71.     * @param params 
  72.     */ 
  73.     public void sayToAll(Object[] params) 
  74.     { 
  75.         IConnection conn = Red5.getConnectionLocal(); 
  76.         //conn.setAttribute(”nickName”, nickName); 
  77.         String nickName =  conn.getAttribute("nickName").toString(); 
  78.         String sayWhat = params[0].toString(); 
  79.         // CuPlayer.com提示:发消息给聊天室的所有人. 
  80.         IScope scope = Red5.getConnectionLocal().getScope(); 
  81.         Iterator it = scope.getConnections().iterator(); 
  82.         for (;it.hasNext();) 
  83.         { 
  84.             Set connections = (Set)it.next(); 
  85.             IConnection tempConn = (IConnection)connections.iterator().next(); 
  86.             if (tempConn instanceof IServiceCapableConnection) 
  87.             { 
  88.                 IServiceCapableConnection sc = (IServiceCapableConnection) tempConn; 
  89.                 // CuPlayer.com提示:服务器端调用客户端flash方法。 
  90.                 sc.invoke("showMessage", new Object[]{nickName+ " : " +sayWhat}); 
  91.             } 
  92.         } 
  93.     } 

 

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <mx:Application fontSize="12" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> 
  3.  <mx:Script> 
  4.   <![CDATA[ 
  5.   
  6.    private var nc:NetConnection; 
  7.   
  8.    private function connectAndJoinRoom(e:Event):void 
  9.    { 
  10.         var nickName:String = nickNameTextInput.text; 
  11.         if (nickName == "") 
  12.         { 
  13.              return; 
  14.         } 
  15.         else 
  16.         { 
  17.              if (nc == null) 
  18.              { 
  19.               initialNetConnection(); 
  20.              } 
  21.         } 
  22.    } 
  23.    
  24.    private function initialNetConnection():void 
  25.    { 
  26.         nc = new NetConnection(); 
  27.         nc.addEventListener(NetStatusEvent.NET_STATUS, connectStatus); 
  28.         nc.client = this; 
  29.         nc.connect("rtmp://localhost/echat", null); 
  30.    } 
  31.    
  32.    private function connectStatus(event:NetStatusEvent) : void 
  33.    { 
  34.     if (event.info.code == "NetConnection.Connect.Success") 
  35.     { 
  36.      nc.call("jionChatRoom", null, nickNameTextInput.text); 
  37.      sendButton.enabled = true; 
  38.     } 
  39.    } 
  40.    
  41.    private function sendMessage():void 
  42.    { 
  43.     var sendString:String = inputWhatYouWantSay.text; 
  44.     inputWhatYouWantSay.text = ""; 
  45.     nc.call("sayToAll", null, sendString); 
  46.    } 
  47.    
  48.    public function showJoinInInfo(message:String) : void 
  49.    { 
  50.     roomArea.text += message + " 加入聊天室" + "/n"; 
  51.    } 
  52.    
  53.    public function showMessage(message:String) : void 
  54.    { 
  55.     roomArea.text += message + "/n"; 
  56.    } 
  57.   ]]> 
  58.  </mx:Script> 
  59.   
  60.   
  61.  <mx:VBox x="20" y="20"> 
  62.   <mx:HBox> 
  63.    <mx:Label text="昵称 : "></mx:Label> 
  64.    <mx:TextInput id="nickNameTextInput"> 
  65.     
  66.    </mx:TextInput> 
  67.    <mx:Button click="connectAndJoinRoom(event)" label="加入聊天室"> 
  68.     
  69.    </mx:Button> 
  70.   </mx:HBox> 
  71.   <mx:HBox width="100%" height="300"> 
  72.    <mx:TextArea height="100%" width="100%" id="roomArea"> 
  73.     
  74.    </mx:TextArea> 
  75.   </mx:HBox> 
  76.   <mx:HBox width="100%"> 
  77.    <mx:TextInput width="100%" id="inputWhatYouWantSay"> 
  78.    </mx:TextInput> 
  79.    <mx:Button enabled="false" id="sendButton" label="发送" click="sendMessage()"> 
  80.    </mx:Button> 
  81.   </mx:HBox> 
  82.  </mx:VBox> 
  83.  
  84. </mx:Application> 

 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器