WSO2 ESB 5.0.0 BETA WebSocket InboundEndPoint

Jos*_*osh 5 wso2esb

我正在测试wso2 esb 5.0.0的测试版,它对我来说有一个有趣的功能,websockets.

我声明de入站端点,就像文档定义(https://docs.wso2.com/display/ESB500/WebSocket+Inbound+Protocol)但我只能从我的客户端接收空消息(连接已完成)我无法向我的客户发送任何信息.

有没有人试过这个功能?

谢谢.

PD:这是我的ws入站点

<inboundEndpoint name="testws" onError="errorsq" protocol="ws"
    sequence="testwssq" suspend="false">
    <parameters>
        <parameter name="inbound.ws.port">9091</parameter>
        <parameter name="ws.outflow.dispatch.sequence">testbesq</parameter>
        <parameter name="ws.outflow.dispatch.fault.sequence">errorsq</parameter>
        <parameter name="ws.client.side.broadcast.level">1</parameter>
    </parameters>
</inboundEndpoint>
Run Code Online (Sandbox Code Playgroud)

这些是我的序列

 <sequence name="testbesq">
    <log level="full"/>
</sequence>
<sequence name="testwssq">
    <log level="full"/>
    <log level="custom">
        <property name="request" value="message receive"/>
    </log>
</sequence>
Run Code Online (Sandbox Code Playgroud)

Cha*_*ena 3

与应用程序级协议 HTTP 不同,在 WebSocket 协议中,传入消息中没有足够的信息来处理这些消息,这些消息要么是文本,要么是二进制低级帧。因此,我们必须通过 WebSocket 定义一些自定义子协议。这将允许客户端和服务器方知道他们通信的帧的内容类型。

默认情况下,每个入站端点都支持以下 Synapse 子协议。

synapse(contentType='application/json')
synapse(contentType='application/xml')
synapse(contentType='text/xml')
Run Code Online (Sandbox Code Playgroud)

我使用 Netty WebSocket 客户端和下面的命令来测试这一点。一旦客户端连接(握手),我就发出消息<Test>message</Test>,我可以在 websocket 客户端看到后端响应。

java -DsubProtocol="synapse(contentType='application/xml')" -DclientPort=9091 -cp netty-example-4.0.30.Final.jar:lib/*:. io.netty.example.http.websocketx.client.WebSocketClient
Run Code Online (Sandbox Code Playgroud)