red5 視頻應用開發指南。第二個項目成功運行經驗(2)


 1,第二個項目通過最開始使用書本介紹的red5 1.0.0 ,發現連接的時候總是出現 

NetConnection.Connect.Failed
undefined

 

連接出錯,具體代碼是這樣的

服務端代碼

package com.red5app;

import java.util.HashMap;  
import java.util.List;  
import java.util.Map;  
  

import org.red5.server.adapter.ApplicationAdapter;  
import org.red5.server.api.IConnection;  
import org.red5.server.api.Red5;  
import org.red5.server.api.scope.IScope;
import org.red5.server.api.service.IServiceCapableConnection;  
import org.red5.server.api.so.ISharedObject;  

public class Application  extends ApplicationAdapter{
    private Map<String,IConnection>  clientDic = new HashMap<String,IConnection>();
    //最開始執行的程序
    public Boolean appStart(){
         return true;
     }
     //斷開連接時執行的程序
     public void appStop(){
         
     }
     //連接時執行的程序
     public boolean connect (IConnection conn,IScope scope,Object[] params){
         if(params.length==0){
             rejectClient("Must pass the login name.");
         }
         String loginname=params[0].toString();
        conn.setAttribute("UserName", loginname);
        if(!clientDic.keySet().contains(loginname))
         {
             clientDic.put(loginname, conn);
             ISharedObject so = getSharedObject(scope, "UserSO");
             if(so==null)
             {
//發現如果注釋掉下面三句就能連接成功,所以可以肯定的是軟件哪里出了問題
this.createSharedObject(scope, "UserSO", true); so = getSharedObject(scope, "UserSO"); } so.setAttribute("userlist", clientDic.keySet().toArray()); } else{ rejectClient("The same user has logged in already"); } return super.connect(conn, scope, params); } public void disconnect (IConnection conn,IScope scope){ String loginname=conn.getAttribute("UserName").toString(); if(loginname!=null){ clientDic.remove(loginname); ISharedObject so= getSharedObject(scope,"UserSO"); if(so!=null){ so.setAttribute("userlist",clientDic.keySet().toArray()); } } super.disconnect(conn, scope); } /** * @category 發送全局消息,所有上線的人都能夠看到 * @param params */ public void sendMessage(List<String> params) { IConnection conn = Red5.getConnectionLocal(); IScope scope = conn.getScope(); ISharedObject so = getSharedObject(scope, "UserSO"); // log.info("Server: call sendMessage and params " + params.get(0)); so.sendMessage("receiveMsg", params); } /** * @category 發送私聊信息,只有被選中的人能夠看到信息 * @param params */ public void sendPrvMessage(List<String> params) { if(params.size() == 3) { String sender = params.get(0); String content = params.get(1); String receiver = params.get(2); if(clientDic.keySet().contains(receiver)) { IConnection conn = clientDic.get(receiver); if(conn instanceof IServiceCapableConnection) { IServiceCapableConnection sc = (IServiceCapableConnection) conn; sc.invoke("receivePrvMsg", new Object[]{sender,content}); } } } } }
Flash cs3的代碼是這樣的
import flash.net.NetConnection;
import flash.events.NetStatusEvent;
import flash.events.MouseEvent;
import flash.net.SharedObject;

var nc:NetConnection=new NetConnection();
nc.connect("rtmp://127.0.0.1/red5_6","asasa");
nc.addEventListener(NetStatusEvent.NET_STATUS,netStatus);
nc.client = this;
function netStatus(event : NetStatusEvent ):void
{
	switch(event.info.code){
		case "NetConnection.Connect.Rejected":
		trace("連接被拒絕!");break;
		case "NetConnection.Connect.Success": 
		var so:SharedObject = SharedObject.getRemote("UserSO",nc.uri,true);
		 so.addEventListener(SyncEvent.SYNC,onSync);
		 so.connect(nc);
		break;
	}
	trace(event.info.code);
	trace(event.info.application);
}
function onSync(event:SyncEvent):void{
	   trace("event"+event);
	   for(var i:Object in event.changeList)
	   {
		var changeobj:Object =event.changeList[i];
		trace("Change Code:"+changeobj.code);
	   }
}
function receiveMessage(mesg:String):void
{
	trace("mesg"+mesg);
}
 //發現如果注釋掉下面三句就能連接成功,所以可以肯定的是軟件哪里出了問題
                 this.createSharedObject(scope, "UserSO", true); so = getSharedObject(scope, "UserSO"); so.setAttribute("userlist", clientDic.keySet().toArray());
換個
版本的軟件,安裝過程是這這樣的:

 

安裝步驟: 
1).解壓壓縮文件到沒有空格和中文的目錄中 
2).配置環境變量 
RED5_HOME=red5-server的解壓目錄的地址 
在PATH=;%RED5_HOME%; 
保存OK! 
3).運行cmd 
這里寫圖片描述 
4).進入dos命令窗口,敲入red5 回車 OK! 
這里寫圖片描述 
5).顯示服務正在啟動中… 
這里寫圖片描述 
出現192.168.1.101-5080 表示啟動成功! 
這個ip我是配置了red5-server 目錄 conf 下面 的red5-properties 
文件 
初次測試可以不用配置,訪問時 用localhost訪問即可 
如果想要配置,配置即可 
這里寫圖片描述 
沒有配置之前的訪問鏈接http://localhost:5080 
配置了IP之后的訪問鏈接http://192.168.1.108:5080 
6)下載oflaDemo,下載 好了之后將文件解壓到red5-server目錄中 webapps 目錄中即可 
下面給出oflaDemo的下載地址: 
鏈接:http://pan.baidu.com/s/1ntCiJod 密碼:au2z 
7).在dos中ctrl+c 按 y 關閉服務器 ,再重新輸入red5 
啟動即可! 
8).然后訪問 
來自:http://blog.csdn.net/tgendure/article/details/50166305


發現可以了,顯示連接成功

NetConnection.Connect.Success
null
event[SyncEvent type="sync" bubbles=false cancelable=false eventPhase=2 changeList=[object Object]]
Change Code:change

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM