初
希望能写一些简单的教程和案例分享给需要的人
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>
文章来源:https://www.toymoban.com/news/detail-780402.html
扩展
如果我们要对这个进行扩展,我们就在 onMessage 里面做扩展就好了,到时候可以写一个 接收和发送的工具类,来做通讯中转。文章来源地址https://www.toymoban.com/news/detail-780402.html
到了这里,关于Java WebSocket Demo ,案例手把手教学 记录(11)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!