WebSocket Inbound Endpoint¶
Introduction¶
The WebSocket Inbound protocol is based on the WebSocket protocol and allows full-duplex message mediation.
Syntax¶
<inboundEndpoint name="WebSocketListenerEP" onError="fault" protocol="ws" sequence="TestIn" suspend="false" xmlns="http://ws.apache.org/ns/synapse">
<parameters>
<parameter name="inbound.ws.port">9091</parameter>
<parameter name="ws.outflow.dispatch.sequence">TestOut</parameter>
<parameter name="ws.client.side.broadcast.level">0</parameter>
<parameter name="ws.outflow.dispatch.fault.sequence">fault</parameter>
</parameters>
</inboundEndpoint>
<inboundEndpoint name="SecureWebSocketEP" onError="fault" protocol="wss" sequence="TestIn" suspend="false" xmlns="http://ws.apache.org/ns/synapse">
<parameters>
<parameter name="inbound.ws.port">9091</parameter>
<parameter name="ws.client.side.broadcast.level">0</parameter>
<parameter name="ws.outflow.dispatch.sequence">TestOut</parameter>
<parameter name="ws.outflow.dispatch.fault.sequence">fault</parameter>
<parameter name="wss.ssl.key.store.file">repository/resources/security/wso2carbon.jks</parameter>
<parameter name="wss.ssl.key.store.pass">wso2carbon</parameter>
<parameter name="wss.ssl.trust.store.file">repository/resources/security/client-truststore.jks</parameter>
<parameter name="wss.ssl.trust.store.pass">wso2carbon</parameter>
<parameter name="wss.ssl.cert.pass">wso2</parameter>
</parameters>
</inboundEndpoint>
Properties¶
Listed below are the properties used for creating a WebSocket inbound endpoint.
Required Properties¶
The following properties are required when creating a WebSocket inbound endpoint.
Property | Description |
---|---|
inbound.ws.port | The netty listener port on which the WebSocket inbound listens. |
ws.client.side.broadcast.level | The client broadcast level that defines how WebSocket frames are broadcast from the WebSocket inbound endpoint to the client. Broadcast happens based on the subscriber path client connected to the WebSocket inbound endpoint. The three possible levels are as follows: 0 - Only a unique client can receive the frame from a WebSocket inbound endpoint. 1 - All the clients connected with the same subscriber path receives the WebSocket frame. 2 - All the clients connected with the same subscriber path, except the one who publishes the frame to the inbound, receives the WebSocket frame. |
ws.outflow.dispatch.sequence | The sequence for the back-end to client mediation. |
ws.outflow.dispatch.fault.sequence | The fault sequence for the back-end to client mediation path. |
sequential | The behavior when executing the given sequence. When set as true , mediation will happen within the same thread. When set as false , the mediation engine will use the inbound thread pool. The default thread pool values can be found in the MI_HOME/conf/deployment.toml file, under the `[mediation]` section. The default setting is true .
|
Suspend |
If the inbound listener should pause when accepting incoming requests, set this to true . If the inbound listener should not pause when accepting incoming requests, set this to false .
|
Required Properties (for Secured WebSocket)¶
In addition to the common WebSocket inbound properties listed above, the following properties are required when creating a secured WebSocket inbound endpoint.
Property | Description |
---|---|
inbound.ws.port | The netty listener port on which the WebSocket inbound listens. |
ws.client.side.broadcast.level | The client broadcast level that defines how WebSocket frames are broadcast from the WebSocket inbound endpoint to the client. Broadcast happens based on the subscriber path client connected to the WebSocket inbound endpoint. The three possible levels are as follows: 0 - Only a unique client can receive the frame from a WebSocket inbound endpoint. 1 - All the clients connected with the same subscriber path receives the WebSocket frame. 2 - All the clients connected with the same subscriber path, except the one who publishes the frame to the inbound, receives the WebSocket frame. |
ws.outflow.dispatch.sequence | The sequence for the back-end to client mediation. |
ws.outflow.dispatch.fault.sequence | The fault sequence for the back-end to client mediation path. |
wss.ssl.key.store.file | The keystore location where keys are stored. |
wss.ssl.key.store.pass | The password to access the keystore file. |
wss.ssl.trust.store.file | The truststore location where keys are stored. |
wss.ssl.trust.store.pass | The password to access the truststore file. |
wss.ssl.cert.pass | The SSL certificate password. |
Optional Properties¶
The following optional properties can be configured when creating a WebSocket inbound endpoint.
Property | Description |
---|---|
ws.boss.thread.pool.size | The size of the netty boss pool. |
ws.worker.thread.pool.size | The size of the worker thread pool. |
ws.subprotocol.handler.class | Specify one or more custom subprotocol handler classes that are required. Separate each custom subprotocol handler class using a semicolon. |
ws.default.content.type | Specifies the content type of the Web Socket frames that are received from the inbound endpoint. |
ws.shutdown.status.code | Specifies the status code of the closed web socket frame sent when the inbound endpoint is closed. |
ws.shutdown.status.message | Specifies the status message of the closed web socket frame when the inbound endpoint is closed. |
ws.pipeline.handler.class | The fully qualified class name of a pipeline handler class that you implemented. |
Ws Use Port Offset |
Optional Properties (for Secured WebSocket)¶
The following optional properties can be configured when creating a Secured WebSocket inbound endpoint.
Property | Description |
---|---|
wss.ssl.protocols | Enables the SSL protocol for the particular WebSocket inbound endpoint. Default value is "TLS". You can change it to a TLS version(s), which is/are enabled with the SSL protocol (i.e., TLSv1,TLSv1.1,TLSv1.2). For example,
|
wss.ssl.cipher.suites |
Enables the specified Cipher Suites for the particular WebSocket inbound endpoint. For example: |