开发者

FluorineFX rtmp connection timeouts

开发者 https://www.devze.com 2023-03-20 12:22 出处:网络
I have application server that I wrote in csharp. The server is communicating with Flash client built using FLEX 4 (Flash Builder 4.5).

I have application server that I wrote in csharp. The server is communicating with Flash client built using FLEX 4 (Flash Builder 4.5).

The communication between the server and the client is done using RTMP.

For the RTMP capabilities in the server side I used the FluorineFX (hosted in IIS7).

All the connections is done using Remote procedure calls where the Flash client executes remote procedure in the server and getting the results in the RPC response callback function.

The server also can send messages to the client using RPC as well.

My problem is that the server diconnects all clients 6 minutes after the last client connected and I can't figure out why it is doing it.

The services-config.xml looks like:

<services-config>    
  <channels>        
    <channel-definition id="my-rtmp" class="mx.messaging.channels.RTMPChannel">
      <endpoint uri="rtmp://{server.name}:1935" class="flex.messaging.endpoints.RTMPEndpoint"/>
    </channel-definition>
  </channels>
</services-config>

The web.config contains the following configuration:

<fluorinefx>
    <settings>          
      <rtmpServer>
        <threadpool minWorkerThreads="0" maxWorkerThreads="25" idleTimeout="60000"/>
        <rtmpConnection pingInterval="0" maxInactivity="60000" maxHandshakeTimeout="0"/>
        <rtmptConnection pingInterval="5000" maxInactivity="60000" maxHandshakeTimeout="5000"/>
        <rtmpTransport receiveBufferSize="4096" sendBufferSize="4096" tcpNoDelay="true"/>
  </rtmpServer>
</settings>

Any help solving the t开发者_运维知识库imouts will be appreciated

Koby


Problem is solved.

It was caused due to IIS7 application pool configuration: On one of the application servers the application pool idle timeout was set to 6 minutes. so after 6 minutes without any http request to the application, the application pool unloaded all the assemblies including the Fluorine Gateway.

When the Gateway's assembly is unloaded, it stops the gateway which terminates all connections.

The way to change the application pool idle timeout is as follows:

In IIS 6: go to the Application Pools section, and right-click > Properties on the pool which hosts the ASP.NET application in question. Go to the Performance tab and uncheck "Shutdown worker processes after being idle for:"

In IIS 7:, go to the Connections pane and find Application Pools, and select Advanced Settings for the pool which hosts your application. Find the "Idle Timeout" property and set it to "0" (this disables the timeout).

Koby

0

精彩评论

暂无评论...
验证码 换一张
取 消