1.依赖
org.springframework.boot spring-boot-starter-websocket
2.配置文件
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/message").setAllowedOrigins("*");
}
@Override
public void configureWebSocketTransport(WebSocketTransportRegistration registry) {
// 设置最大消息发送长度为5m
registry.setMessageSizeLimit(1024 * 1024 * 5);
registry.setSendBufferSizeLimit(1024 * 1024 * 5);
registry.setSendTimeLimit(2000);
}
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.enableSimpleBroker("/topic");// 推送消息前缀
registry.setApplicationDestinationPrefixes("/topic");// 应用请求前缀
registry.setUserDestinationPrefix("/user");// 推送用户前缀
}
}
3.Controller 消息控制器
@Api(tags = "消息控制器")
@RestController
public class MessageController {
@Autowired
private IMessageService service;
@MessageMapping("/server/byte")
public void subscribeByte(@Headers Map headers, String s) {
System.out.println(s);
service.subscribeByte(headers, s);
}
@Autowired
private SimpMessagingTemplate messagingTemplate;
@PostMapping("/server/aa")
public void subscribeByte1(@Headers Map headers, String s) {
//
new Thread(new Msg(s, messagingTemplate)).start();
// service.subscribeByte(headers, s);
}
public class Msg implements Runnable {
private String msg;
private SimpMessagingTemplate messagingTemplate;
public Msg(String msg, SimpMessagingTemplate messagingTemplate) {
this.msg = msg;
this.messagingTemplate = messagingTemplate;
}
@Override
public void run() {
this.messagingTemplate.convertAndSend("/topic/anquanmao", msg);
}
}
}
4.html 连接socket
demo 选择一张图片并通过websocket发送到后台
后台会实时通过websocket把图片回传(可以把本页面打开两个以测试效果)



