SpringBoot集成websocket(5)|(使用OkHttpClient实现websocket以及详细介绍)

SpringBoot集成websocket(6)|(使用OkHttpClient实现websocket的代理访问)


章节
第一章链接: SpringBoot集成websocket(1)|(websocket客户端实现)
第二章链接: SpringBoot集成websocket(2)|(websocket服务端实现以及websocket中转实现)
第三章链接: SpringBoot集成websocket(3)|(websocket调用websocket采用回调方式实现数据互传)
第四章链接: SpringBoot集成websocket(4)|(使用okhttp3实现websocket)
第五章链接: SpringBoot集成websocket(5)|(使用OkHttpClient实现websocket以及详细介绍)
第六章链接: SpringBoot集成websocket(6)|(使用OkHttpClient实现websocket的代理访问)

前言

上篇文章介绍了为什么选用OkHttpClient来实现websocket,本篇章就不过多的讲述,本章主要介绍OkHttpClient实现websocket使用代理功能,主要场景是客户现场的服务器可能不直接对外开放,必须要经过统一的代理,这个时候java服务为了调用远程url这需要设置代理地址,相对于python,python会直接过去系统的代理配置,java需要收到配置。

一、初始化OkHttpClient

每个client对象都有自己的线程池和连接池,如果为每个请求都创建一个client对象,自然会出现内存溢出。所以官方建议OkHttpClient应该单例化,重用连接和线程能降低延迟和减少内存消耗。

1.OkHttpClient实现

官方介绍了三种创建client的方式
1、new OkHttpClient()
该方式将创建一个使用默认设置的client单例对象。
2、new OkHttpClient.Builder()
该方式允许自定义配置自己的单例client对象。配置connectionTimeout, readTimeout, writeTimeout等参数。
3、okHttpclient.newBuilder()
该方式通过已经存在的client对象,创建特殊需要的client对象。如 我们通过上个方法创建了自定义配置的单例client对象,但是针对某些场景需要调整某些参数,那么就需要使用该方法创建定制的client。新client对象与旧client对象共享连接池,线程池和其他配置。

            return new OkHttpClient.Builder()
                    .proxySelector(
                            new ProxySelector() {
                                @Override
                                public List<Proxy> select(URI uri) {
                                    // 返回你想要使用的代理列表例如  proxyUrl="10.0.74.52"   proxyPort=3128
                                    return Collections.singletonList(new Proxy(Proxy.Type.HTTP, new InetSocketAddress(config.proxyUrl, config.proxyPort)));
                                }
                                @Override
                                public void connectFailed(URI uri, SocketAddress sa, IOException ioe) {
                                    // 连接代理失败的回调
                                    log.error(ioe.toString());
                                    log.error(sa.toString());
                                }
                            }
                    )
                    .connectTimeout(50L, TimeUnit.SECONDS)
                    .readTimeout(3*60L, TimeUnit.SECONDS)
                    .build();

总结

本文主要介绍了为什么选用OkHttpClient来实现websocket,本篇章就不过多的讲述,本章主要介绍OkHttpClient实现websocket多级代理跳转中的问题优化以及springboot实现websocket的一些常见问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值