java okhttp实现websocket客户端

本文介绍如何使用okhttp实现websocket客户端

代码直接上

package com.ouya.exchange.index.util;

import java.util.concurrent.CountDownLatch;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.WebSocket;
import okhttp3.WebSocketListener;
import okio.ByteString;

public class WebsocketTest {

  //只是为了阻塞主线程,防止退出,所以,真正使用的时候需要去除相关的这个东西
  static CountDownLatch countDownLatch=new CountDownLatch(1);
  public static void main(String[] args) throws InterruptedException {
    OkHttpClient client = new OkHttpClient.Builder().retryOnConnectionFailure(true).build();
    Request request = new Request.Builder().url("ws://10.17.145.23:9988").build();
    client.dispatcher().cancelAll();//清理一次
    client.newWebSocket(
        request,
        new WebSocketListener() {
          @Override
          public void onOpen(WebSocket webSocket, Response response) {
            System.out.println("连接打开");
            webSocket.send("发送了一条数据");
            webSocket.send("{\"FID\":\"003\",\"SUB\":\"OFEX.BTCPERP.Depth\"}");
          }

          @Override
          public void onMessage(WebSocket webSocket, String text) {
            System.out.println("接收到消息:" + text);
          }

          @Override
          public void onMessage(WebSocket webSocket, ByteString bytes) {
            System.out.println("这个可以不管,这个接收到是byte类型的");
          }

          @Override
          public void onClosing(WebSocket webSocket, int code, String reason) {
            System.out.println("连接关闭中");
          }

          @Override
          public void onClosed(WebSocket webSocket, int code, String reason) {
            System.out.println("连接关闭");
          }

          @Override
          public void onFailure(WebSocket webSocket, Throwable t, Response response) {
            System.out.println("结束时,重连可以在这儿发起");
            countDownLatch.countDown();
          }
        });
    countDownLatch.await();
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值