zoukankan      html  css  js  c++  java
  • Red5 项目的流事件回调流程和注意事项

    回调流程

    参考:Red5的一般客户端连接各个事件的触发顺序,经验证实际过程如下:

    程序开始(在RED5启动的时候会自动去启动APP,从而触发以上事件)

    Start:MyChatRoom
    appStart:MyChatRoom

    第一个客户端连接(MyChatRoom/lobby/roomA)

    Start:/lobby
    roomStart:/lobby
    Start:/lobby/roomA
    roomStart:/lobby/roomA
    appConnect:0
    connect
    appJoin:0:
    roomConnect:0
    connect:/lobby
    roomJoin:0:/lobby
    roomConnect:0
    connect:/lobby/roomA
    roomJoin:0:/lobby/roomA

    第二个客户端连接

    appConnect:1
    connect
    appJoin:1:
    roomConnect:1
    connect:/lobby
    roomJoin:1:/lobby
    roomConnect:1
    connect:/lobby/roomA
    roomJoin:1:/lobby/roomA

    第二个客户端离开

    roomDisconnect:1
    disconnect:/lobby/roomA
    roomLeave:1:/lobby/

    roomAroomDisconnect:1
    disconnect:/lobby
    roomLeave:1:/lobby

    appDisconnect:1
    disconnect:
    appLeave:1:

    第一个客户端离开

    roomDisconnect:0
    disconnect:/lobby/roomA
    roomLeave:0:/lobby/roomA

    stop:/lobby/roomA
    roomStop:/lobby/roomA

    roomDisconnect:0
    disconnect:/lobby
    roomLeave:0:/lobby

    stop:/lobby
    roomStop:/lobby

    appDisconnect
    disconnect:
    appLeave:0:

     程序退出

    stop
    appStop:

    注意事项

    1. 在我第一次测试时,我继承的Adapter实现了connect、appConnect、roomConnect三个方法。发现无论何时,程序只会回调connect而不会回调另外两个。查看connect的代码和注释发现若要区分地调用appConnet和roomConnect,就不需要实现connect函数,仅实现后两者就够了。否则,Red5只会调用connect,而传入的参数scope中有区别。

      对disconnect、appDisconnect、roomDisconnect同理。

      需要强调这一点有些重要。因为我在使用Red5的挑战认证(CRAM)例子的时候,发现当我在appStart中把例子作为listener注册到我的应用里面,应用程序根本不会回调例子的appConnect,解决方法就是这一点。应用程序把事件分发给了connect而不是appConnect。

      还要说的是,如果我们把CRAM的例子改为connect而不是appConnect,那可能需要对scope做一些区别。只有scope的值为app name的时候才执行例子中的代码。否则可能会多次执行认证过程。(未验证)

    2. 我的程序中测试结果跟参考的博文在start和appStart、stop和appStop上的调用顺序有所差异,原因是什么暂时不了解。先记录下面线索:

    1. 执行线程是一直的,如日志

      [WARN] [Red5_Scheduler_Worker-10] org.red5.core.Application - stop scope Name: test
      [WARN] [Red5_Scheduler_Worker-10] org.red5.core.Application - roomStop

    2. 我继承的父类是MultiThreadApplicationAdapter,被我参考的博文使用的是ApplicationAdapter
    3. 版本号可能不一样,我使用1.0.5,对方使用的版本未知,看其发文的时间显然应该是比我早得多。
  • 相关阅读:
    java核心技术卷上学习笔记
    个人作业——软件工程实践总结作业
    个人作业——软件产品案例分析
    软件工程作业-结对编程 2.0
    软件工程作业-结对编程 1.0
    软件工程作业2.0
    软件工程作业1.0
    《面向对象程序设计》c++第六次作业___calculator SE
    面向对象程序设计作业 6.1~6.4
    面向对象程序设计作业 5.1~5.5
  • 原文地址:https://www.cnblogs.com/developerdaily/p/4647752.html
Copyright © 2011-2022 走看看