de public void onClosed(WebSocket webSocket, int code, String reason) { super.onClosed(webSocket, code, reason); } @Override public void onFailure(WebSocket webSocket, Throwable t, Response response) { super.onFailure(webSocket, t, response); } }); } }); }
温馨提示: (1)EchoWebSocketListener继承OkHttp中的抽象类WebSocketListener,重写了几个方法,是用来异步回调的,这里简单说一下:onOpen当WebSocket和远程建立连接时回调;两个onMessage就是接收到消息时回调,只是消息内容的类型不同;onClosing是当远程端暗示没有数据交互时回调(即此时准备关闭,但连接还没有关闭);onClosed就是当连接已经释放的时候被回调;onFailure当然是失败时被回调(包括连接失败,发送失败等)。 (2)send用来发送消息;close用来关闭连接 (3)WebSocket官网就提供了相应url可以测试,测试地址为:ws://echo.websocket.org (4)关闭连接方式,OkHttp提供两个方法来关闭连接: ??1)close webSocket.close(0, “bye”);请求服务器优雅地关闭连接然后等待确认。在关闭之前,所有已经在队列中的消息将被传送完毕。 既然涉及到交互,那么socket可能不会立即关闭。如果初始化和关闭连接是和Activity的生命周期绑定的(比如onPause/onResume),有一些消息可能是在close被调用之后接收到,所以这需要小心去处理。 ??2)cancel;cancel更加残忍:它会丢弃所有已经在队列中的消息然后残忍地关闭socket。这样也有优点:不必等待家政(housekeeping)和已在队列中消息的传送。然而,选择cancel还是close取决于使用场景。
4. 项目运行与访问
安装apk后,运行主页面如下:
点击START按钮,出现以下结果
三、项目源码下载
链接:https://pan.baidu.com/s/1t8OmZy8WLZr2aKI8S2XcwQ 提取码:jwzi
四、参考文章
- https://blog.csdn.net/xlh1191860939/article/details/75452342/
- https://blog.csdn.net/xlh1191860939/article/details/75452513
|