Android WebSocket 实践

本文探讨了WebSocket作为HTTP的补充,允许服务端主动向客户端推送消息的优势。介绍了WebSocket在推送、聊天室、开发工具等场景的应用,并分享了在ReactNative中使用WebSocket的经验,以及在Android客户端搭建WebSocket Server的挑战,推荐了AndroidAsync库作为实现方案。
摘要由CSDN通过智能技术生成

既生HTTP何生WebSockt

与服务端交互的协议中,HTTP只能被动接收客户端请求,然后响应。而WebSocket在客户端与服务端建立连接以后,服务端可以主动发消息给客户端。这就是WebSocket的特点。

应用

因为服务端可以主动发消息的特性,WebSocket在以下场景使用非常多:
1、推送
2、聊天室
3、开发工具
4…

大部分功能依赖于产品的业务,投入使用可能比较困难,而开发工具是开发人员可以肆意发挥的地方!

ReactNative中WebSocket的使用

ReactNative开发过程中,pc端可以控制android端重新加载、打印堆栈等等。这些的实现都依赖于WebSocket。

com.facebook.react.packagerconnection.ReconnectingWebSocket实现了WebSocket的连接,使用了okhttp。

final public class ReconnectingWebSocket extends WebSocketListener {
   
      public ReconnectingWebSocket(
      String url,
      MessageCallback messageCallback,
      ConnectionCallback connectionCallback) {
   
    super();
    mUrl = url;
    mMessageCallback = messageCallback;
    mConnectionCallback = connectionCallback;
    mHandler = new Handler(Looper.getMainLooper());
  }

  public void connect() {
   
    if (mClosed) {
   
      throw new IllegalStateException("Can't connect closed client");
    }

    OkHttpClient httpClient = new OkHttpClient.Builder()
      .connectTimeout(10, TimeUnit.SECONDS)
      .writeTimeout(10, TimeUnit.SECONDS)
      .readTimeout(0, TimeUnit.MINUTES) // Disable timeouts for read
      .build();

    Request request = new Request.Builder().url(mUrl).build();
    httpClient.newWebSocket(request, this);
  }
}

JSPackagerClient包装了ReconnectingWebSocket,在onMessage回调处分发服务端下发的命令:

final public class JSPackagerClient implements ReconnectingWebSocket.MessageCallback {
   
  private ReconnectingWebSocket mWebSocket;
  
  public JSPackagerClient(
      String clientId, PackagerConnectionSettings settings,
      Map
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值