三、WebSocket客户端
1.说明
以下几个类是 WebSocket 开发中常用的类:
WebSocketRoute
类: 一个 WebSocket 业务处理类,Voovan 采用异步的方式调用这个类的各种事件.- 类: 一个 WebSocket 会话类,提供了诸如:
send
,close
,isConnect
等基于会话的方法. WebSocketFilter
类: WebSocket 消息过滤器类
2.材料准备
首先我们来介绍一个HttpClient.webSocket
方法
- urlString: websocket 访问路由地址.
- webSocketRouter: websocket 路由处理对象.如果要开发一个 WebSocket 类,首先我们要调用webSocket方法,并注册一个路由和 WebSocket 的路由处理类WebSocketRouter.
最后我们来介绍一下样例的信息:
- 访问的地址:
http://127.0.0.1:28080/websocket
- 收到后发送 RECIVE_MSG
onSent
输出发送的消息onClose
输出 close如何处理消息的发送和接受?
如何接受消息:
在 Voovan HttpClient 中向客户端发送消息有三种方式:
- onOpen 事件返回的数据将会被发送至客户端, 返回 null 时不发送任何消息.
- 调用 WebSocketSession.send 来发送数据. 也就是说,我们在 WebSocket 刚建立连接的时候就可以主动发送消息给客户端了,然后就是在收到消息后返回一个消息给客户端.
3.过滤器
我们可以通过 WebSocketRouter
的 addFilterChain
方法为 WebSocketRouter
增加过滤器.下面例子中我们增加了一个 StringFilter
过滤器,这是一个字符串过滤器是一个继承于WebSocketFilter
接口的类,他的作用是将 WebSocket 接收的 ByteBuffer 转换成 一个字符串对象供 WebSocketRouter 的 onRecived 调用. 这样这个过滤器类就可以被多个场景复用,且保证了WebSocketRouter的可单元测试的特性。下面我们来看一下 StringFilter 的实现:
4.举个栗子
这里我们首先初始话一个HttpClient
对象,接着我们通过方法来注册一个 WebSocket 消息处理类.最后通过实现WebSocketRouter
类来处理 WebSocket 的消息.