我正在测试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)
与应用程序级协议 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)
| 归档时间: |
|
| 查看次数: |
271 次 |
| 最近记录: |