A new feature has been added to Red5 to allow any number of Mina IoFilters to be added to a connection at the Server or Application level. The particular filter detailed here is one that simply counts the connections and rejects any that exceed the set maximum number. This post details setting the filter at the Application level, but if you want it at the server level simply add the below bean definitions to your global webapp configuration located here: red5/webapps/red5-default.xml.
To add the filter you must first edit your applications red5-web.xml and add your beans:
<!-- Limits connections on a per-session basis --> <bean id="connectionFilter" class="org.gregoire.red5.ConnectionShapeFilter"> <property name="maxConnections" value="2"/> </bean>
Next create a “config” bean to inform the server about your filter bean names:
<bean id="config" class="org.red5.server.adapter.Config"> <!-- List of filter bean names to be loaded --> <property name="filterNames"> <list> <value>connectionFilter</value> </list> </property> </bean>
One important thing to note is that since classes in the main server are creating the connections, your filter classes must be found by the URLClassloader. The URLClassloader created by the server uses jar files within Red5’s lib directory, so put your filter classes here (red5/lib) inside a jar. Once your classes are in-place, start your server and the filters will take effect.
An example Eclipse / FlexBuilder project can be found here.