Socket.IO实现聊天功能

我们知道OkHttp3中有WebSocket可以实现聊天功能,但是我们需要自己定义前后台交互协议,比较麻烦,而Socket.IO完美的帮我们定义好了这个协议,用起来相当简单。

Soket.IO文档在Github上都有

1、为连接做准备,一般在代码块中。
这里options可以设置一些其他参数,比如重连(默认true),重连次数等。

	{
        try {
            IO.Options options = new IO.Options();
            options.transports = new String[]{WebSocket.NAME};
            socket = IO.socket("socket地址", options);
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }
    }

2、注册事件监听,开启连接;
socket.io有定义好的基本都能用到的事件,然后可以自己定义事件。

	private void socketOn() {
        if (socket != null) {
            socket.on(Socket.EVENT_CONNECT, onConnect);
            socket.on(Socket.EVENT_DISCONNECT, onDisconnect);
            socket.on(Socket.EVENT_CONNECT_ERROR, onConnectError);
            socket.on(Socket.EVENT_CONNECT_TIMEOUT, onConnectError);
            socket.on("custom_event", onCustom);
            socket.connect();
        }
    }

所有回调都是此形式,args为回调结果,具体参数可以自己打印出来找一下规律。

	private Emitter.Listener onDisconnect = args -> runOnUiThread(() -> {
        LogUtil.e(tag, "onDisconnect");
        if (args.length == 0) return;
        String result = args[0].toString();
    });

3、解除事件监听,关闭连接

	private void socketOff() {
        if (socket != null) {
            socket.disconnect();
            socket.off(Socket.EVENT_CONNECT, onConnect);
            socket.off(Socket.EVENT_DISCONNECT, onDisconnect);
            socket.off(Socket.EVENT_CONNECT_ERROR, onConnectError);
            socket.off(Socket.EVENT_CONNECT_TIMEOUT, onConnectError);
            socket.off("custom_event", onCustom);
            socket.close();
            socket = null;
        }
    }

完事儿了,就这么简单,主要就是定义事件,事件回调中取参数,我们项目中result是json格式的,处理起来就比较简单了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值