Я хотел бы создать приложение чата, где пользователь может создать канал, в котором могут быть 2-n пользователей. В настоящее время у меня есть приложение, которое использует веб-сокеты, но это всего лишь одно окно, и все, кто присоединяется (я имею в виду, когда я открываю приложение на нескольких windows), помещаются в один чат.
Вот мой код:
@Configuration
@EnableWebSocketMessageBroker
public class WsConfig implements WebSocketMessageBrokerConfigurer{
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/test").withSockJS();
}
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.enableSimpleBroker("/topic");
registry.setApplicationDestinationPrefixes("/app");
}
}
@Controller
public class ChatController {
@MessageMapping("/register")
@SendTo("/topic/msg")
public ChatMessage register(@Payload ChatMessage chatMessage, SimpMessageHeaderAccessor headerAccessor) {
headerAccessor.getSessionAttributes().put("username", chatMessage.getSender());
return chatMessage;
}
@MessageMapping("/send")
@SendTo("/topic/msg")
public ChatMessage sendMessage(@Payload ChatMessage chatMessage) {
return chatMessage;
}
}
public class ChatMessage {
private String content;
private String sender;
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getSender() {
return sender;
}
public void setSender(String sender) {
this.sender = sender;
}
public MessageType getType() {
return type;
}
public void setType(MessageType type) {
this.type = type;
}
}
У меня есть базовый c клиентский интерфейс прослушивания, который запрашивает у клиента имя пользователя, а затем помещает их в чат.
У меня уже есть user-serivce, и я хотел бы иметь возможность создать канал с указанием c выбранных пользователей. Например, если я нажму "http://localhost: 8080 / channel /? ChannelId = 1 ", то вы получите окно чата со всеми пользователями, которые находятся в канале с идентификатором 1. Что такое лучший подход для этого?