Я хочу, чтобы отправить сообщение пользователю, когда он подключается к прыжку WebSocket, ЯКак отправить сообщение пользователю, когда он подключается к прыжку WebSocket
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Autowired
private GenervicSerice<User> userService;
@Autowired
private SimpMessagingTemplate template;
private CurrentUser currnetUser;
@Override
public void registerStompEndpoints(StompEndpointRegistry stompEndpointRegistry) {
// TODO Auto-generated method stub
stompEndpointRegistry.addEndpoint("/ws").withSockJS();
}
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/queue/", "/topic/", "/exchange/");
config.setApplicationDestinationPrefixes("/app");
}
@Override
public void configureClientInboundChannel(ChannelRegistration registration) {
registration.setInterceptors(myChannelInterception());
try {
updateNotificationAndBroadcast();
} catch (Exception e) {
return;
}
}
@Bean
public MyChannelInterception myChannelInterception() {
return new MyChannelInterception();
}
private void updateNotificationAndBroadcast() {
try {
template.convertAndSend("/queue/notify", "Greetings");
} catch (Exception e) {
System.out.println("Error message is " + e.getMessage() + "\n\n\n" + "Caused by " + e.getCause()
);
}
}
}
класс MyChannelInterception является
public class ImtehanChannelInterception extends ChannelInterceptorAdapter {
private CurrentUser currnetUser;
@Override
public Message<?> preSend(Message<?> message, MessageChannel channel) {
MessageHeaders headers = message.getHeaders();
SimpMessageType type = (SimpMessageType) headers.get("simpMessageType");
String simpSessionId = (String) headers.get("simpSessionId");
currnetUser = new CurrentUser();
if (type == SimpMessageType.CONNECT) {
Principal principal = (Principal) headers.get("simpUser");
currnetUser.setCurrentUserEmail(principal.getName());
System.out.println("WsSession " + simpSessionId
+ " is connected for user " + principal.getName());
} else if (type == SimpMessageType.DISCONNECT) {
System.out.println("WsSession " + simpSessionId
+ " is disconnected");
}
return message;
}
}
через это я получаю информацию о новом подключенном пользователе, но метод updateNotificationAndBroadcast()
в WebSocketConfig
не отправляет сообщения новым зарегистрированным пользователям.
Любого пример или ресурс в сети, пожалуйста, что акт будет экономить жизнь один. Я потратил три дня на эту проблему, но не смог выполнить работу, пожалуйста, помогите в этом случае. –
Обновлено с помощью примера –
Пожалуйста, добавьте ')' в конце __ "GREETINGS"; __ –