IO.socket连接

今天说一下io.socket连接 使用,首先导入jar包,在build.gradle文件写入compile(‘io.socket:socket.io-client:0.8.3’)
IO.Options options = new IO.Options();
Socket socket = IO.socket(uri,options);
socket.connect();
uri 是一个ip地址,可以和后台商量,可以以ip+唯一参数的形式,options给一个默认的就行,
Emitter emitter = socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
//连接成功,做一些操作
}
Emitter emitter = socket.on(Socket.EVENT_DISCONNECT, new Emitter.Listener() {
//连接断开,做一些操作
}
//自定义事件,和服务器做交互,传递数据,以json的格式 接收and请求

socket.emit("自定义事件", new JSONObject(), new Ack() {
            @Override
            public void call(Object... args) {
                System.out.println(args + "+++++++++++++++++++++++++++");
                Gson gson = new Gson();
                if (args.length > 0) {
                    String jsondata = gson.toJson(args[0]);
                    System.out.println(jsondata + "-----");
                    
                }
            }
        });

        emitter.on("studentInfo", new Emitter.Listener() {
            @Override
            public void call(Object... args) {
                System.out.println("服务器端请求学生信息studentInfo:=========================");
               
                // 返回给服务器端
                try {
                    Ack ack = (Ack) args[args.length - 1];
                    JSONObject jsonObject = new JSONObject();
                    jsonObject.put("studentId", "");
                    jsonObject.put("studentName", "");
                    ack.call(jsonObject);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });`
        //向服务端提交数据,以json格式
         socket.emit("stuQuesAnswer1", json, new Ack() {
          @Override
            public void call(Object... args) {
            //请求失败或成功,做其他操作
            ...
            }
         }
         //监听服务器自定义事件
         socket.on("自定义事件", new Emitter.Listener() {

            @Override
            public void call(Object... args) {
                System.out.println(args);
                ...
            }

注意:当第二次连接的时候,会有可能事件监听不到,会以为连接通道堵塞,socket.open();就好了;当服务端交互需要刷新界面时候,要用handle,或者另起Thread,否则会报错,socket监听里是不能做耗时操作,以及刷新UI的。
当离开界面的时候,要主动断开连接,把监听取消

 if (socket != null) {
            socket.disconnect();
             socket.close();
            socket.io().off();
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值