Spring: приложение для обмена сообщениями Websocket с указанными c каналами - PullRequest
0 голосов
/ 16 января 2020

Я хотел бы создать приложение чата, где пользователь может создать канал, в котором могут быть 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. Что такое лучший подход для этого?

...