MCPcopy Index your code
hub / github.com/Red5/red5-websocket

github.com/Red5/red5-websocket @1.6

Chat with this repo
repository ↗ · DeepWiki ↗ · release 1.6 ↗ · + Follow
277 symbols 570 edges 26 files 113 documented · 41%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

red5-websocket

Websocket plug-in for Red5

This plugin is meant to provide websocket functionality for applications running in red5. The code is constructed to comply with rfc6455.

http://tools.ietf.org/html/rfc6455

Special thanks to Takahiko Toda and Dhruv Chopra for the initial ideas and source.

Configuration

Add the WebSocket transport to the jee-container.xml or red5.xml. If placing it in the red5.xml, ensure the bean comes after the plugin launcher entry.

To bind to one or many IP addresses and ports:

<bean id="webSocketTransport" class="org.red5.net.websocket.WebSocketTransport">
        <property name="addresses">
            <list>
                <value>192.168.1.174</value>
                <value>192.168.1.174:8080</value>
                <value>192.168.1.174:10080</value>
            </list>
        </property>
</bean>

If you don't want to specify the IP:

<bean id="webSocketTransport" class="org.red5.net.websocket.WebSocketTransport">
    <property name="port" value="8080"/>
</bean>

To support secure communication (wss) add this:

    <bean id="webSocketTransportSecure" class="org.red5.net.websocket.WebSocketTransport">
        <property name="secureConfig">
            <bean id="webSocketSecureConfig" class="org.red5.net.websocket.SecureWebSocketConfiguration">
                <property name="keystoreType" value="JKS"/>
                <property name="keystoreFile" value="conf/keystore"/>
                <property name="keystorePassword" value="password"/>
                <property name="truststoreFile" value="conf/truststore"/>
                <property name="truststorePassword" value="password"/>
            </bean>
        </property>
        <property name="addresses">
            <list>
                <value>192.168.1.174:10081</value>
            </list>
        </property>
    </bean>

Adding WebSocket to an Application

To enable websocket support in your application, add this to your appStart() method:

  WebSocketScopeManager manager = ((WebSocketPlugin) PluginRegistry.getPlugin("WebSocketPlugin")).getManager();
  manager.addApplication(scope);

For clean-up add this to appStop():

  WebSocketScopeManager manager = ((WebSocketPlugin) PluginRegistry.getPlugin("WebSocketPlugin")).getManager();
  manager.removeApplication(scope);

Test Page

Replace the wsUri variable with your applications path.

<!DOCTYPE html>  
<meta charset="utf-8" />  
<title>WebSocket Test</title>  
<script language="javascript" type="text/javascript">  
var wsUri = "ws://192.168.1.174:10080/myapp"; 
var output;  function init() { output = document.getElementById("output"); testWebSocket(); }  function testWebSocket() { websocket = new WebSocket(wsUri); websocket.onopen = function(evt) { onOpen(evt) }; websocket.onclose = function(evt) { onClose(evt) }; websocket.onmessage = function(evt) { onMessage(evt) }; websocket.onerror = function(evt) { onError(evt) }; }  function onOpen(evt) { writeToScreen("CONNECTED"); doSend("WebSocket rocks"); }  function onClose(evt) { writeToScreen("DISCONNECTED"); }  function onMessage(evt) { writeToScreen('<span style="color: blue;">RESPONSE: ' + evt.data+'</span>'); websocket.close(); }  function onError(evt) { writeToScreen('<span style="color: red;">ERROR:</span> ' + evt.data); }  function doSend(message) { writeToScreen("SENT: " + message);  websocket.send(message); }  function writeToScreen(message) { var pre = document.createElement("p"); pre.style.wordWrap = "break-word"; pre.innerHTML = message; output.appendChild(pre); }  window.addEventListener("load", init, false);  </script>  <h2>WebSocket Test</h2> 




Demo application project

https://github.com/Red5/red5-websocket-chat

Pre-compiled JAR

https://mega.co.nz/#!BAkFnKKJ!5QsE31RIzxzevHphlIFbwofVTVFkBuZA7QTGvhzvVx4

Extension points exported contracts — how you extend this code

WebSocketExtension (Interface)
Common interface for WebSocket extensions. @author Paul Gregoire [4 implementers]
src/main/java/org/red5/net/websocket/codec/extension/WebSocketExtension.java
IWebSocketDataListener (Interface)
Listener for WebSocket events. [1 implementers]
src/main/java/org/red5/net/websocket/listener/IWebSocketDataListener.java
IWebSocketScopeListener (Interface)
(no doc)
src/main/java/org/red5/net/websocket/listener/IWebSocketScopeListener.java

Core symbols most depended-on inside this repo

getManager
called by 9
src/main/java/org/red5/net/websocket/WebSocketPlugin.java
getScope
called by 7
src/main/java/org/red5/net/websocket/WebSocketScopeManager.java
build
called by 7
src/main/java/org/red5/net/websocket/model/Packet.java
getMessageAsString
called by 7
src/main/java/org/red5/net/websocket/model/WSMessage.java
getMessageType
called by 7
src/main/java/org/red5/net/websocket/model/WSMessage.java
extractHeaderValue
called by 7
src/main/java/org/red5/net/websocket/codec/WebSocketDecoder.java
addListener
called by 5
src/main/java/org/red5/net/websocket/WebSocketScope.java
getSession
called by 5
src/main/java/org/red5/net/websocket/WebSocketConnection.java

Shape

Method 242
Class 30
Interface 3
Enum 2

Languages

Java100%

Modules by API surface

src/test/java/org/red5/net/websocket/WebSocketServerTest.java105 symbols
src/main/java/org/red5/net/websocket/WebSocketConnection.java34 symbols
src/main/java/org/red5/net/websocket/WebSocketScope.java21 symbols
src/main/java/org/red5/net/websocket/model/WSMessage.java14 symbols
src/main/java/org/red5/net/websocket/WebSocketScopeManager.java13 symbols
src/main/java/org/red5/net/websocket/codec/WebSocketDecoder.java12 symbols
src/main/java/org/red5/net/websocket/WebSocketTransport.java12 symbols
src/main/java/org/red5/net/websocket/SecureWebSocketConfiguration.java8 symbols
src/main/java/org/red5/net/websocket/WebSocketPlugin.java7 symbols
src/main/java/org/red5/net/websocket/listener/IWebSocketDataListener.java6 symbols
src/main/java/org/red5/net/websocket/model/Packet.java5 symbols
src/main/java/org/red5/net/websocket/WebSocketHandler.java5 symbols

For agents

$ claude mcp add red5-websocket \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page