三、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.过滤器

    我们可以通过 WebSocketRouteraddFilterChain 方法为 WebSocketRouter 增加过滤器.下面例子中我们增加了一个 StringFilter过滤器,这是一个字符串过滤器是一个继承于WebSocketFilter接口的类,他的作用是将 WebSocket 接收的 ByteBuffer 转换成 一个字符串对象供 WebSocketRouter 的 onRecived 调用. 这样这个过滤器类就可以被多个场景复用,且保证了WebSocketRouter的可单元测试的特性。下面我们来看一下 StringFilter 的实现:

    4.举个栗子

    这里我们首先初始话一个HttpClient对象,接着我们通过方法来注册一个 WebSocket 消息处理类.最后通过实现WebSocketRouter类来处理 WebSocket 的消息.