java 实现SocketIo客户端

#java 实现SocketIo客户端

这里主要是使用java实现SocketIo的客户端,接收长链接推送的消息,直接上代码

引入maven

		<dependency>
            <groupId>io.socket</groupId>
            <artifactId>socket.io-client</artifactId>
            <version>2.0.1</version>
        </dependency>
import io.socket.client.IO;
import io.socket.client.Socket;
import lombok.extern.slf4j.Slf4j;

import java.net.URI;
import java.net.URLEncoder;
import java.util.Arrays;

@Slf4j
public class SocketIoTest {
    public static void main(String[] args) throws Exception {
        SocketIoTest client = new SocketIoTest();
        final Socket socket = client.initSocket("https://ip:8888/user", "验证账号", "验证密码");
        Socket connect = socket.connect();
        socket.on("监听事件", objects -> {
            String s = Arrays.toString(objects);
            String substring = s.substring(1, s.length() - 1);
            System.out.println("长链接事件响应数据=========" + substring);

        });

        socket.on("另外一个event", objects -> {
            String s = Arrays.toString(objects);
            String substring = s.substring(1, s.length() - 1);
            System.out.println("另外一个event响应数据=========" + substring);

        });

        boolean connected = socket.connected();
        System.out.println(connected);
    }

    public Socket initSocket(String socketUrl, String accessKeyId, String accessKeySecret ) throws Exception {

        IO.Options options = new IO.Options();
        options.transports = new String[]{"websocket"};
        options.reconnection = false;

        System.out.println(accessKeySecret);
        String replace = URLEncoder.encode(accessKeySecret, "UTF-8");

        options.query = "id=" + accessKeyId + "&pwd=" + replace;
        URI uri = URI.create(socketUrl);
        final Socket socket = IO.socket(uri, options);
        socket.on(Socket.EVENT_CONNECT, objects -> System.out.println("client: " + "连接成功"));
        socket.on(Socket.EVENT_DISCONNECT, objects -> System.out.println("client: " + "连接断开"));
        socket.on(Socket.EVENT_CONNECT_ERROR, objects -> System.out.println("client: " + "连接失败"));

        socket.on("connection notice", objects -> {
            String s = Arrays.toString(objects);
            String substring = s.substring(1, s.length() - 1);
            System.out.println("链接通知=========" + substring);
        });
        boolean connected = socket.connected();
        return socket;
    }

}

该代码根据实际服务端要求,还可以添加其他参数,根据实际情况而定,例如超时时间、是否重连等等。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值