<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    問征夫以前路
    感謝所有關心過支持過我的人, 感謝所有恨過我嘲笑過我的人 !
    posts - 30,comments - 147,trackbacks - 0
      red5的共享對象,使服務器和客戶端的交互變的更簡單和直接,服務器把處理完的業務邏輯放在共享對象(SharedObject)中,客戶端只需要調用(SharedObject),就可以直接操作后臺所返回的數據。所有的red5應用程序都繼承自ApplicationAdapter類:
     1import java.util.HashMap;
     2import java.util.Map;
     3
     4import org.red5.server.adapter.ApplicationAdapter;
     5import org.red5.server.api.IClient;
     6import org.red5.server.api.IConnection;
     7import org.red5.server.api.IScope;
     8import org.red5.server.api.so.ISharedObject;
     9
    10
    11/**
    12 * red5后臺服務器與flash前臺交互類
    13 * @author zhanghh
    14 *
    15 */

    16public class Application extends ApplicationAdapter{
    17    
    18    private Map<String, IConnection> onLineClient = new HashMap<String, IConnection>();
    19    
    20    
    21    // 屬性
    22    private IScope appScope;
    23
    24    private String username;
    25
    26    private ISharedObject so;
    27    
    28    private String sharedName;
    29
    30    /**
    31     * 客戶端連接服務器的方法
    32     */

    33    public String createSharedObjectPond(Object[] params){
    34        //接收客戶端傳過來的參數值
    35        sharedName = (String) params[0];
    36        
    37        //創建共享對象
    38        createSharedObject(appScope,sharedName,true);
    39        so = getSharedObject(appScope, sharedName);
    40    
    41        //引用共享對象的監聽器
    42        so.addSharedObjectListener(new SampleSharedObjectListener());
    43
    44        
    45        //將此三個屬性值放入共享對象中
    46        so.beginUpdate();
    47        so.setAttribute("temperature"20);
    48          so.setAttribute("humidity"50);
    49          so.setAttribute("nutrition"85);
    50        so.endUpdate();
    51        
    52        return sharedName;
    53    }

    54    
    55    /**
    56     * 此應用于開始運行時觸發的方法
    57     */

    58    public boolean appStart(IScope app) {
    59        System.out.println("red5系統已啟動~!");
    60        if (!super.appStart(app)) {
    61            return false;
    62        }

    63        appScope = app;
    64        return true;
    65
    66    }

    67
    68    /**
    69     * 連接服務器
    70     */

    71    public boolean connect(IConnection conn, IScope scope, Object[] params) {
    72            username = "";
    73           // 登入時將連接ID和連接信息形成對應關系并存入在線列表
    74           String link_id = conn.getClient().getId();
    75           System.out.println("連接--->link_id:"+link_id);
    76           onLineClient.put(username, conn);
    77
    78           return true;
    79        
    80    }

    81    
    82    /**
    83     * 斷開服務器
    84     */

    85    public void disconnect(IConnection conn, IScope scope) {
    86        super.disconnect(conn, scope);
    87        System.out.println("歡迎下次光臨,再見!");
    88    }

    89    
    90}

    91

    為了得到客戶端共享對象的改變通報,監聽器必須繼承接口ISharedObjectListener:

     1import org.red5.server.api.so.ISharedObjectBase;
     2import org.red5.server.api.so.ISharedObjectListener;
     3
     4
     5/**
     6 * 共享對象的監聽實現類
     7 * @author zhanghh
     8 *
     9 */

    10public class SampleSharedObjectListener implements ISharedObjectListener{
    11
    12    /**
    13     * 監聽客戶端屬性的變化值
    14     */

    15    @Override
    16    public void onSharedObjectUpdate(ISharedObjectBase so, String key, Object value) {
    17        //共享對象so的屬性<key>
    18        //被修改成<value>
    19        //客戶端有任何的屬性值改變,都會調用onSharedObjectUpdate()方法
    20    }

    21    @Override
    22    public void onSharedObjectConnect(ISharedObjectBase so) {
    23        //red5每次連接的時候調用此方法
    24    }

    25    @Override
    26    public void onSharedObjectClear(ISharedObjectBase arg0) {
    27        // TODO Auto-generated method stub
    28    }

    29    @Override
    30    public void onSharedObjectDelete(ISharedObjectBase arg0, String arg1) {
    31        // TODO Auto-generated method stub
    32    }

    33    @Override
    34    public void onSharedObjectDisconnect(ISharedObjectBase arg0) {
    35        // TODO Auto-generated method stub
    36    }

    37    @Override
    38    public void onSharedObjectSend(ISharedObjectBase so, String method, List params) {
    39        // TODO Auto-generated method stub
    40    }

    41    @Override
    42    public void onSharedObjectUpdate(ISharedObjectBase arg0, IAttributeStore arg1) {
    43        // TODO Auto-generated method stub
    44    }

    45    @Override
    46    public void onSharedObjectUpdate(ISharedObjectBase arg0, Map<String, Object> arg1) {
    47        // TODO Auto-generated method stub
    48    }

    49}

    50

    共享對象在被服務器處理完業務邏輯之后,要把處理后的值廣播給客戶端,最好作為注冊句柄被通報。
    使用beginUpdate() 和 endUpdate()方法:

    1//將此三個屬性值放入共享對象中
    2        so.beginUpdate();
    3        so.setAttribute("temperature"20);
    4          so.setAttribute("humidity"50);
    5          so.setAttribute("nutrition"85);
    6        so.endUpdate();



    posted on 2009-05-26 18:09 kenzhang 閱讀(3901) 評論(3)  編輯  收藏

    FeedBack:
    # re: red5創建和使用共享對象SharedObject[未登錄]
    2009-05-28 20:26 | conjs
    我一直在研究 red5 , 有時間我們交流一下.  回復  更多評論
      
    # re: red5創建和使用共享對象SharedObject
    2009-05-31 22:23 | kenzhang
    @conjs
    好啊,red5我剛接觸不久,請多指教~!  回復  更多評論
      
    # re: red5創建和使用共享對象SharedObject
    2009-06-24 10:19 | kenzhang
    @conjs
    請問red5里面有沒有任務調度的方法?
    類似于quartz  回復  更多評論
      

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 无码免费一区二区三区免费播放| 免费无码AV片在线观看软件| 久久亚洲私人国产精品vA| 国产无人区码卡二卡三卡免费| 真人无码作爱免费视频| 国产亚洲一区二区精品| 拍拍拍又黄又爽无挡视频免费| 免费观看四虎精品成人| 777亚洲精品乱码久久久久久 | 亚洲欧洲日产国码av系列天堂 | 中文字幕在线免费看| 亚洲国产精品成人精品软件| 免费吃奶摸下激烈视频| 久久国产色AV免费看| 一出一进一爽一粗一大视频免费的 | 久久久久久AV无码免费网站 | 亚洲日韩一页精品发布| 一个人看的www在线观看免费| 国产精品99爱免费视频| 亚洲激情视频图片| 亚洲成AV人在线观看天堂无码| 日本高清免费aaaaa大片视频| 99久久人妻精品免费二区| 理论片在线观看免费| 亚洲三级中文字幕| 亚洲精品一品区二品区三品区| 午夜寂寞在线一级观看免费| 久久久久久夜精品精品免费啦| 一级黄色片免费观看| 亚洲AV无码一区二区三区性色| 亚洲精品在线免费观看| 国产亚洲精品资在线| 国产成人在线免费观看| 麻豆最新国产剧情AV原创免费 | 久久国产乱子伦精品免费一| 四虎精品成人免费视频| 亚洲人成无码网站在线观看| 久久精品九九亚洲精品| 亚洲av日韩av激情亚洲| 亚洲熟妇无码八AV在线播放| 亚洲国产激情一区二区三区|