#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;
}
}
该代码根据实际服务端要求,还可以添加其他参数,根据实际情况而定,例如超时时间、是否重连等等。