Android WebSocket

  1. 什么是webSocket?

ws是一个协议,归属于IETF。

  • HTTP是运行在TCP协议传输层上的应用协议,而ws是通过HTTP协议协商如何连接,然后独立运行在TCP协议传输层上的应用协议。
  • ws是一个持久化的协议,相对于HTTP这种非持久的协议来说。
  • ws约定了一个通信的规范,通过一个握手的机制,客户端和服务器之间能建立一个类似tcp的连接,从而方便它们之间的通信
  1. 使用webSocket的特性:

为了更好、更灵活,轻量的与服务器通讯。因为ws提供了简单的消息规范,可以更快的适应长连接的环境,其实现在HTTP协议自身就可以做,但是不太轻便。

ws最大的特点就是实现全双工通信:客户端能够实时推送消息给服务端,服务端也能够实时推送消息给客户端。

ws可以做聊天室,股票实时价格显示等应用

  1. 使用webSocket:

一般在使用ws的过程中,很多时候,ws的断开连接,都是异常情况
但是对于状态回调基本上都是主动断开

1.正常情况断开 方法回调处理 调用onClose()
2.异常情况断开 心跳检测 一般ws就已经包含了该协议,当有异常的时候,直接调用 onError()

依赖:
//WebSocket
implementation 'org.java-websocket:Java-WebSocket:1.3.0

public class MainActivity extends AppCompatActivity {
    private static final String TAG = "MainActivity";
    private WebSocketClient webc;
    private Draft connDraft=new Draft_17();// 连接协议

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //连接成功后给服务器发送消息
		//webc.send("hello word");

        setListener();
    }
        
    /**
     * 建立长连接
     */
    private void setListener() {
        try {
            initClient();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private void initClient() throws Exception {
        //执行初始化
        webc = new WebSocketClient(new URI("接口地址"),connDraft) {
            @Override
            public void onOpen(ServerHandshake arg0) {
                //连接成功执行的方法
                Log.e(TAG, "onMessage: --"+"成功---"+arg0 );
            }

            @Override
            public void onMessage(String message) {
                //服务器推送的数据
                //可以发广播,或消息
                String s = message.toString();
                Log.e(TAG, "onMessage: --"+"数据json--"+s );    
            }

            @Override
            public void onError(Exception error) {
                //连接服务器异常执行这里
                Log.e(TAG, "onMessage: --"+"连接服务器异常---"+error );
            }

            @Override
            public void onClose(int code,String reason, boolean remote) {
                //连接断开执行的方法
            }
        };
        webc.connect();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();

        webc.close();//关闭长连接
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拉莫帅

你的鼓励将是我的创作动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值