WebSocket安卓客户端实现详解(三)--服务端主动通知

这篇博客详细介绍了WebSocket在安卓客户端实现服务端主动通知的流程,包括处理类、事件响应、协议格式解析和业务逻辑解耦。通过观察者模式进行事件分发,并提供了源码下载链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本篇依旧是接着上一篇继续扩展,还没看过之前博客的小伙伴,这里附上前几篇地址

WebSocket安卓客户端实现详解(一)–连接建立与重连

WebSocket安卓客户端实现详解(二)–客户端发送请求

终于是最后一篇啦,有点激动\ ( ≧▽≦ ) /啦啦啦,

服务端主动通知

热身完毕,我们先回顾下第一篇中讲到的服务端主动通知的流程

  1. 根据notify中事件类型找到对应的处理类,处理对应逻辑.

  2. 然后用eventbus通知对应的ui界面更新.

  3. 如果需要ack,发送ack请求.

在回顾下第二篇中服务端主动通知协议的格式

{
   
   
    "resp_event": 20,
    "action": "",
    "seq_id": 11111111,
    "resp": {
   
   

      }
    }
}

我们根据resp_event为20判断这次响应是服务端主动通知,然后通过action找到对应处理类,然后把resp中数据解析成对应的bean传入对应处理类执行对应业务逻辑.

show code

public class WsManager {
   
   

  ....跟之前相同代码省略.....

  class WsListener extends WebSocketAdapter {
   
   
      @Override
      public void onTextMessage(WebSocket websocket, String text) throws Exception {
   
   
          super.onTextMessage(websocket, text);
          Logger.t(TAG).d("receiverMsg:%s", text);

          Response response = Codec.decoder(text);//解析出第一层bean
          if (response.getRespEvent() == 10) {
   
   //响应
              CallbackWrapper wrapper = callbacks.remove(
                      Long.parseLong(response.getSeqId()));//找到对应callback
              if (wrapper == null) {
   
   
                  Logger.t
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值