如何断开rtmp连接?

时间:2012-08-21 06:08:37

标签: red5 rtmp openlaszlo lzx

你知道是否真的可以断开rtmpconnection以及如何断开连接? 官方文档中没有“disconnect”方法,rtmpconnection.lzx也没有。因此,如果您知道断开rtmp连接的方法,请告诉我。提前谢谢。

1 个答案:

答案 0 :(得分:1)

<rtmpconnection> class in OpenLaszlo使用ActionScript 3 NetConnection clas连接到服务器。 NetConnection类有一个method close(),以下是文档:

  

关闭在本地或服务器上打开的连接   调度具有代码属性的netStatus事件   值为NetConnection.Connect.Closed。

     

此方法断开在。上运行的所有NetStream对象   连接。任何尚未发送的排队数据都将被丢弃。 (至   在不关闭连接的情况下终止本地或服务器流,请使用   NetStream.close()。)如果你关闭连接然后想要   创建一个新的,您必须创建一个新的NetConnection对象并调用   再次使用connect()方法。

     

close()方法还会断开所有正在运行的远程共享对象   通过这种联系。但是,您无需重新创建共享   要重新连接的对象。相反,你可以只调用SharedObject.connect()   重新建立与共享对象的连接。此外,任何数据   您发出时排队的共享对象   重新建立连接后发送NetConnection.close()   共享对象。

     

使用Flash Media Server,最好的开发实践是调用   当客户端不再需要与服务器的连接时,close()。   调用close()是清除未使用连接的最快方法。您   可以将服务器配置为自动关闭空闲连接   备份措施。

在&lt; rtmpconnection&gt;的LZX源代码中我可以看到NetConnection.close()仅在连接失败的情况下被调用:

<!--- Handle connection failure, attempt to reconnect using altsrc
      @keywords private -->
<method name="_handleConnectionFailure" args="msg"><![CDATA[
    this._nc.close();
    if (this.debug) {
        if ($debug) Debug.warn("error connecting to", this._connecturl, ":", msg);
    }
....

我不知道为什么在&lt; rtmpconnection&gt;上没有定义关闭方法。 class,但你可以通过扩展&lt; rtmpconnection&gt;为自己添加代码。并添加一个close方法。只需确保正确处理状态变量。

由于我很长时间没有使用过Red5,我无法告诉你Red5是否会自动关闭空闲的NetConnections。