Skip to content

okhttp的websocket封装,添加重连机制,消息分发等

Notifications You must be signed in to change notification settings

shihchieh-ma/websoket

Repository files navigation

websoket

okhttp的websocket封装,添加重连机制,消息分发等

有两个模块,websocket_core进行连接以及重连的工作.websocket_dispatch提供创建WsHelper 对象的方法,WsHelper暴露连接断开发送消息的方法.且对状态和消息的进行分类处理回调.

##调用

创建WsHelper

WsHelper  wsHelper = new WsHelper.Builder()
            .url("")//ws地址,*必填
            .netStateService(getApplicationContext())//启动网络状态变化监听的服务,*必填
            .autoReconnect(true)//自动重连,默认true
            .autoReconnectTime(2000)//重连时间,默认失败2s后重连
            .pingSpace(2000)//发ping间隔,默认2s
            .enanbleLog(true)//打印日志,默认为true
            .connectTimeOut(5)//连接超时时长,默认10s
            .readTimeOut(5)//读取超时时长,默认10s
            .wirteTimeOut(5)//写超时时长,默认10s
            .msgListener(this)//消息回调
            .signalEventListener(this)//信令回调
            .wsStateListener(this)//ws状态变更回调
            .sslSocketFactory()//数字签名认证,默认无
            .hostnameVerifier()//IP地址和hostnanme验证,默认OkHostnameVerifier
            .build();

连接

wsHelper.startWsConnect();//开始连接
wsHelper.disWsConnect();//断开连接

消息发送

wsHelper.sendMessage("消息,一般是json格式");

##回调

OnWsStateListener

/**
 * ws连接成功
 */
void onWsOpen();

/**
 * ws重连中
 */
void onWsReconnecting();

/**
 * ws连接失败
 * @param e
 * @param response
 */
void onWsFail(IOException e, Response response);

/**
 * ws连接关闭
 *
 * @param code
 * @param reason
 */
void onWsClosed(int code, String reason);

OnMsgListener

 /**
 * ws收到的消息(非信令,只是普通消息)
 *
 * @param msg
 */
void onWsMessage(String msg);

OnSignalEventListener

这个需要自定义回调,因为这个是根据业务变化的.
比如收到某些和服务器约定的消息时需要做的事情,一般这个是不需要走onWsMessage回调
只需要做好对应逻辑即可.

ps:

有些人问怎么确定发出去的消息对面成功收到了,发送消息的时候带一条唯一的msgid,网关在收到的 时候需要回复ack消息,只要回复的ack消息带上你这个msgid就行,这样根据ack的msgid即可断定消息对面已经拿到了.

About

okhttp的websocket封装,添加重连机制,消息分发等

Resources

Stars

Watchers

Forks

Packages

No packages published