Java WebSocket Demo ,案例手把手教学 记录(11)
- 初
- 环境与设备
- 第一步:新建一个 java 项目
- 第二步:在 pom.xml 加入依赖 org.java-websocket
- 第三步:编写websocket核心代码:创建类
- 第四步:编写websocket核心代码:基础代码
- 测试,我们写一个h5前端
- 扩展
初
希望能写一些简单的教程和案例分享给需要的人
java websocket 服务端
环境与设备
系统:window
 开发工具:IDEA 2022.2.3
JAVA 网络通讯开发
第一步:新建一个 java 项目
- 填写项目名字
- 选择 JAVA 语言
- 选择 Maven
- 选择自己的JDK版本 (我当前用的是 1.8.0_301)


第二步:在 pom.xml 加入依赖 org.java-websocket
<dependencies>
        <dependency>
            <groupId>org.java-websocket</groupId>
            <artifactId>Java-WebSocket</artifactId>
            <version>1.5.2</version>
        </dependency>
    </dependencies>
第三步:编写websocket核心代码:创建类
在 org.example 上右击鼠标(进入菜单)选择 Java Calss 创建一个类 :WebSocketServerDao 如下面两图操作


第四步:编写websocket核心代码:基础代码
package org.example;
import org.java_websocket.WebSocket;
import org.java_websocket.handshake.ClientHandshake;
import org.java_websocket.server.WebSocketServer;
import java.net.InetSocketAddress;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class WebSocketServerDao extends WebSocketServer {
    private static List<WebSocket> webSocketList = new ArrayList<>();
    private ExecutorService executorService; // 线程池
    public WebSocketServerDao(int port) {
        super(new InetSocketAddress(port));
        executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()); // 初始化线程池
    }
    @Override
    public void onOpen(WebSocket conn, ClientHandshake handshake) {
        webSocketList.add(conn);
        System.out.println("WebSocket连接已建立:" + conn.getRemoteSocketAddress());
    }
    @Override
    public void onClose(WebSocket conn, int code, String reason, boolean remote) {
        webSocketList.remove(conn);
        System.out.println("WebSocket连接已关闭:" + conn.getRemoteSocketAddress());
    }
    @Override
    public void onMessage(WebSocket conn, String message) {
        System.out.println("WebSocket接收到消息:" + message);
        executorService.execute(() -> { // 使用线程池处理消息
            conn.send("WebSocket服务端回复:" + message); // 发送消息到WebSocket客户端
        });
    }
    @Override
    public void onError(WebSocket conn, Exception ex) {
        System.err.println("WebSocket异常:" + ex.getMessage());
    }
    @Override
    public void onStart() {
        System.out.println("启动");
    }
}
测试,我们写一个h5前端
<!DOCTYPE html>
<html>
<head>
    <title>WebSocket Demo</title>
</head>
<body>
    <input type="text" id="messageInput" />
    <button onclick="sendMessage()">发送消息</button>
    <ul id="messages"></ul>
    <script>
        const socket = new WebSocket('ws://127.0.0.1:8088');
        socket.addEventListener('open', (event) => {
            console.log('WebSocket 连接已建立:', event);
            // 在这里可以发送消息
            socket.send('你好!');
        });
        // 连接打开时触发
        socket.onopen = function (event) {
            console.log("WebSocket 连接已打开");
        };
        // 收到消息时触发
        socket.onmessage = function (event) {
            console.log("收到服务器消息:" + event.data);
            var li = document.createElement("li");
            li.textContent = event.data;
            document.getElementById("messages").appendChild(li);
        };
        // 连接关闭时触发
        socket.onclose = function (event) {
            console.log("WebSocket 连接已关闭");
        };
        // 发送消息
        function sendMessage() {
            var message = document.getElementById("messageInput").value;
            socket.send(message);
        }
    </script>
</body>
</html>




扩展
如果我们要对这个进行扩展,我们就在 onMessage 里面做扩展就好了,到时候可以写一个 接收和发送的工具类,来做通讯中转。
                










