You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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();
        }
    }
}

四、运行步骤

  1. 先跑服务端代码,控制台输出Socket.IO服务端已启动,监听端口8080就说明服务起来了;
  2. 再运行客户端代码,你就能看到控制台输出连接成功、发送消息、收到回复的完整流程;
  3. 10秒后客户端会主动断开,两端都会输出断开日志。

内容的提问来源于stack exchange,提问作者Raja Vel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:31:19