springboot websocket发送消息
时间: 2023-11-04 10:56:32 浏览: 112
springboot websocket发送消息的方法有多种。可以使用@ServerEndpoint注解定义一个websocket服务端,然后使用@OnMessage注解来监听客户端发送的消息,再使用@OnOpen注解和@OnClose注解来监听连接的打开和关闭。
另外,还可以使用Spring的WebSocketTemplate类来发送消息。首先创建一个WebSocketClient对象,然后使用它的convertAndSend方法来发送消息。
相关问题
springboot websocket发送消息大小限制
Spring Boot WebSocket 没有固定的消息大小限制,它取决于 WebSocket 协议本身以及后端服务器的配置。WebSocket 协议定义了自己的消息大小限制,客户端和服务器都必须遵守。一般来说,如果消息大小超过了 WebSocket 协议定义的限制,就会导致连接断开或异常。
在后端服务器方面,可以通过配置来调整 WebSocket 消息大小限制。例如,对于 Tomcat 服务器,可以通过设置 maxBinaryMessageBufferSize 和 maxTextMessageBufferSize 属性,来调整二进制消息和文本消息的最大大小限制。默认情况下,这两个属性的值都是 65536 字节。如果需要发送更大的消息,可以将这些属性的值调整为更大的值。
注意,如果发送大量的消息,可能会对服务器和网络带宽造成负担,因此需要根据实际情况来调整消息大小限制。
springboot websocket实现消息通知功能
以下是使用SpringBoot实现WebSocket消息通知功能的步骤:
1.添加依赖
在`pom.xml`文件中添加以下依赖:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
```
2.创建WebSocket配置类
创建一个WebSocket配置类,用于配置WebSocket相关的参数,例如消息代理、消息终端等。代码如下:
```java
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic");
config.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/ws").withSockJS();
}
}
```
3.创建WebSocket控制器
创建一个WebSocket控制器,用于处理WebSocket连接、断开连接和接收消息等操作。代码如下:
```java
@Controller
public class WebSocketController {
@MessageMapping("/hello")
@SendTo("/topic/greetings")
public Greeting greeting(HelloMessage message) throws Exception {
Thread.sleep(1000); // simulated delay
return new Greeting("Hello, " + message.getName() + "!");
}
}
```
4.创建消息实体类
创建一个消息实体类,用于封装消息内容。代码如下:
```java
public class HelloMessage {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
```
5.创建消息响应实体类
创建一个消息响应实体类,用于封装消息响应内容。代码如下:
```java
public class Greeting {
private String content;
public Greeting(String content) {
this.content = content;
}
public String getContent() {
return content;
}
}
```
6.创建前端页面
创建一个前端页面,用于测试WebSocket连接和发送消息。代码如下:
```html
<!DOCTYPE html>
<html>
<head>
<title>Hello WebSocket</title>
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script src="https://cdn.jsdelivr.net/sockjs/1/sockjs.min.js"></script>
<script src="https://cdn.jsdelivr.net/stomp.js/2/stomp.min.js"></script>
</head>
<body>
<div>
<label for="name">What is your name?</label>
<input type="text" id="name" />
<button id="connect">Connect</button>
<button id="disconnect">Disconnect</button>
</div>
<div>
<label for="message">Message:</label>
<input type="text" id="message" />
<button id="send">Send</button>
</div>
<div id="greetings"></div>
<script>
var stompClient = null;
function setConnected(connected) {
$("#connect").prop("disabled", connected);
$("#disconnect").prop("disabled", !connected);
if (connected) {
$("#greetings").show();
} else {
$("#greetings").hide();
}
$("#greetings").html("");
}
function connect() {
var socket = new SockJS('/ws');
stompClient = Stomp.over(socket);
stompClient.connect({}, function(frame) {
setConnected(true);
console.log('Connected: ' + frame);
stompClient.subscribe('/topic/greetings', function(greeting) {
showGreeting(JSON.parse(greeting.body).content);
});
});
}
function disconnect() {
if (stompClient !== null) {
stompClient.disconnect();
}
setConnected(false);
console.log("Disconnected");
}
function sendName() {
stompClient.send("/app/hello", {}, JSON.stringify({'name': $("#name").val()}));
}
function showGreeting(message) {
$("#greetings").append("<tr><td>" + message + "</td></tr>");
}
$(function () {
$("form").on('submit', function (e) {
e.preventDefault();
});
$("#connect").click(function() { connect(); });
$("#disconnect").click(function() { disconnect(); });
$("#send").click(function() { sendName(); });
});
</script>
</body>
</html>
```
7.启动应用程序
启动应用程序,并访问前端页面`http://localhost:8080`,输入名称并点击“Connect”按钮连接WebSocket,输入消息并点击“Send”按钮发送消息,可以在页面上看到收到的消息。
阅读全文