给我提供一个springboot方法,要求可以和很多客户端调用WebSocket做长链接,要求可以给客户端发送消息,之前提供的都没用,没用一个能正常运行的,需要什么依赖也一并提供,要很详细,保证可用,不要搞乱七八糟的,复制粘贴全报错的那张,服务器IP是192.168.124.20,端口号用的9090,并且给一个JS能连接到的案例
时间: 2023-08-07 10:06:33 浏览: 45
好的,这里提供一个基于Spring Boot的WebSocket示例,可以与多个客户端建立长连接并实现消息发送。
首先,需要在pom.xml中引入以下依赖:
```xml
<dependencies>
<!-- Spring WebSocket依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<!-- Spring Web依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
```
接下来,创建一个WebSocket配置类,用于配置WebSocket相关信息:
```java
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
// 注册WebSocket处理器,处理客户端的连接、断开连接和消息处理等
registry.addHandler(new WebSocketHandler(), "/websocket")
.setAllowedOrigins("*"); // 允许跨域访问
}
/**
* 自定义WebSocket处理器
*/
private class WebSocketHandler extends TextWebSocketHandler {
private List<WebSocketSession> sessions = new ArrayList<>();
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
// 客户端连接时触发
sessions.add(session); // 将客户端会话添加到列表中
}
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
// 处理客户端发送的消息
String payload = message.getPayload();
System.out.println("Received message: " + payload);
// 给所有客户端发送消息
for (WebSocketSession s : sessions) {
s.sendMessage(new TextMessage(payload));
}
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
// 客户端断开连接时触发
sessions.remove(session); // 将客户端会话从列表中移除
}
}
}
```
这里简单说明一下,我们在WebSocketConfig类中实现了WebSocketConfigurer接口,并重写了registerWebSocketHandlers方法,用于注册WebSocket处理器。在自定义的WebSocketHandler中,我们实现了TextWebSocketHandler类的三个方法,分别用于处理客户端连接、消息处理和断开连接。
最后,在Spring Boot的启动类中添加@EnableAutoConfiguration注解启动WebSocket:
```java
@SpringBootApplication
@EnableAutoConfiguration
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
```
好了,以上就是一个简单的Spring Boot WebSocket示例了。下面我们来给出一个JS代码示例,用于连接到WebSocket并发送消息:
```javascript
// 连接WebSocket
var socket = new WebSocket("ws://192.168.124.20:9090/websocket");
// 连接成功时触发
socket.onopen = function(event) {
console.log("WebSocket connected!");
}
// 接收到消息时触发
socket.onmessage = function(event) {
console.log("Received message: " + event.data);
}
// 发送消息
socket.send("Hello WebSocket!");
```
以上JS代码可以在浏览器控制台中运行,用于连接到WebSocket并发送消息。注意,这里的WebSocket地址应该与Spring Boot中配置的地址一致。
希望这个示例对你有帮助!
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)