Spring boot Spring引导:当新消息到达时通知用户
应用程序从一个特定用户接收一条新消息给另一个特定用户。如果收件人“在线”,则应通知他们有新邮件。如果他们希望获得消息,他们将通过http手动请求消息 我尝试了多种URL组合,但似乎无法让服务器通知用户。到目前为止,我提供的代码都是空白的,我不知道该写什么 这是我的WebSocketMessageBrokerConfiguration类:Spring boot Spring引导:当新消息到达时通知用户,spring-boot,spring-websocket,stomp,Spring Boot,Spring Websocket,Stomp,应用程序从一个特定用户接收一条新消息给另一个特定用户。如果收件人“在线”,则应通知他们有新邮件。如果他们希望获得消息,他们将通过http手动请求消息 我尝试了多种URL组合,但似乎无法让服务器通知用户。到目前为止,我提供的代码都是空白的,我不知道该写什么 这是我的WebSocketMessageBrokerConfiguration类: @Configuration @EnableWebSocketMessageBroker public class WebSocketConfig implem
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("? ? ?");
config.setApplicationDestinationPrefixes("? ? ?");
config.setUserDestinationPrefix("? ? ?");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry
.addEndpoint("/chat-notify")
.setAllowedOrigins("*")
.withSockJS();
}
}
这是接收消息的控制器,在将其存储在数据库中后,应通知收件人:
@Autowired
private SimpMessagingTemplate webSocket;
@PostMapping
@PreAuthorize("isAuthenticated()")
public ResponseEntity<?> send(@RequestBody @Valid NewMessageDTO dto, @ApiIgnore Authentication auth) {
User user = userService.getLoggedInUser(auth);
Message message = messageService.messageFromNewMessageDTO(dto, user);
messageService.save(message);
webSocket.convertAndSendToUser("? ? ?", "? ? ?", "new message arrived");
return new ResponseEntity<>(HttpStatus.CREATED);
}
@Autowired
私有SimpMessageTemplateWebSocket;
@邮戳
@预授权(“isAuthenticated()”)
公共响应发送(@RequestBody@Valid NewMessageDTO dto,@apignore Authentication auth){
User User=userService.getLoggedInUser(auth);
Message Message=messageService.messageFromNewMessageDTO(dto,用户);
messageService.save(message);
webSocket.convertandsendouser(“???”、“???”、“新消息到达”);
返回新的ResponseEntity(HttpStatus.CREATED);
}
这是一个简单的html文件,其中包含一些javascript,可以测试这一点:
<html>
<script src="https://cdn.jsdelivr.net/npm/sockjs-client@1.1/dist/sockjs.min.js"></script>
<script src="stomp.js"></script>
<script type="text/javascript">
var socket = new SockJS('http://localhost:8080/chat-notify');
var stompClient = Stomp.over(socket);
stompClient.connect({ }, function(frame) {
stompClient.subscribe("? ? ?", function(data) {
console.log(data);
});
});
</script>
</html>
var socket=new SockJS('http://localhost:8080/chat-通知);;
var stompClient=Stomp.over(套接字);
stompClient.connect({},函数(框架){
stompClient.subscribe(“???”),函数(数据){
控制台日志(数据);
});
});