Java实现Socket.IO服务端与客户端连接示例及Jar包详情咨询
嘿,我来帮你搞定Java版Socket.IO的服务端和客户端连接示例,还有Jar包的事儿——之前搜不到正确源码确实挺闹心的,我把靠谱的代码和依赖信息整理给你:
Java Socket.IO 服务端与客户端连接示例
一、所需Jar包依赖详情
不管你用Maven管理还是手动下载Jar包,这里都给你理清楚:
用Maven的话(推荐,自动处理依赖链)
直接在pom.xml里加这些依赖就行,版本我选的是稳定的4.0.1,你也可以去Maven中央仓库找最新稳定版:
服务端依赖
<dependency> <groupId>io.socket</groupId> <artifactId>socket.io-server</artifactId> <version>4.0.1</version> </dependency>
客户端依赖
<dependency> <groupId>io.socket</groupId> <artifactId>socket.io-client</artifactId> <version>4.0.1</version> </dependency>
手动下载Jar包的情况
需要下载socket.io-server-4.0.1.jar、socket.io-client-4.0.1.jar,还要配套下载它们的依赖包(比如Netty系列的netty-handler、netty-transport、netty-codec-http等,版本会和Socket.IO的版本匹配,直接从Maven中央仓库搜对应的包就行)。
二、服务端示例代码
这是个基础的独立Socket.IO服务端,监听8080端口,能处理客户端连接、消息收发和断开事件:
import io.socket.engineio.server.EngineIoServer; import io.socket.socketio.server.SocketIoServer; import io.socket.socketio.server.SocketIoSocket; public class SocketIoServerExample { public static void main(String[] args) { // 初始化EngineIo和SocketIo服务实例 EngineIoServer engineIoServer = new EngineIoServer(); SocketIoServer socketIoServer = new SocketIoServer(engineIoServer); // 监听客户端连接事件 socketIoServer.on("connection", args -> { SocketIoSocket clientSocket = (SocketIoSocket) args[0]; System.out.println("新客户端连接:" + clientSocket.getId()); // 监听客户端发来的"message"事件 clientSocket.on("message", messageArgs -> { String receivedMsg = (String) messageArgs[0]; System.out.println("收到客户端[" + clientSocket.getId() + "]的消息:" + receivedMsg); // 给客户端回复消息 clientSocket.send("服务器已收到:" + receivedMsg); }); // 监听客户端断开事件 clientSocket.on("disconnect", disconnectArgs -> { System.out.println("客户端[" + clientSocket.getId() + "]已断开连接"); }); }); // 启动服务,监听8080端口 try { engineIoServer.bind(8080); System.out.println("Socket.IO服务端已启动,监听端口8080"); // 保持服务运行(阻塞当前线程) Thread.currentThread().join(); } catch (Exception e) { e.printStackTrace(); } } }
三、客户端示例代码
这个Java客户端能连接到本地服务端,发送消息并接收服务器的回复:
import io.socket.client.IO; import io.socket.client.Socket; import io.socket.emitter.Emitter; import java.net.URISyntaxException; public class SocketIoClientExample { public static void main(String[] args) { try { // 创建Socket实例,指定服务端地址 Socket clientSocket = IO.socket("http://localhost:8080"); // 监听连接成功事件 clientSocket.on(Socket.EVENT_CONNECT, args1 -> { System.out.println("客户端已成功连接到服务端"); // 给服务端发送消息,事件名为"message" clientSocket.emit("message", "Hello Socket.IO Server!"); }); // 监听服务器发来的消息 clientSocket.on(Socket.EVENT_MESSAGE, args1 -> { String serverMsg = (String) args1[0]; System.out.println("收到服务器回复:" + serverMsg); }); // 监听断开连接事件 clientSocket.on(Socket.EVENT_DISCONNECT, args1 -> { System.out.println("客户端已与服务端断开连接"); }); // 启动连接 clientSocket.connect(); // 保持客户端运行10秒(实际项目中根据业务逻辑处理) Thread.sleep(10000); // 主动断开连接 clientSocket.disconnect(); } catch (URISyntaxException | InterruptedException e) { e.printStackTrace(); } } }
四、运行步骤
- 先跑服务端代码,控制台输出
Socket.IO服务端已启动,监听端口8080就说明服务起来了; - 再运行客户端代码,你就能看到控制台输出连接成功、发送消息、收到回复的完整流程;
- 10秒后客户端会主动断开,两端都会输出断开日志。
内容的提问来源于stack exchange,提问作者Raja Vel
相关产品推荐
相关产品推荐

