2015-09-29 3 views
3

Я создал этот проект веб-дизайна Spring Websocket, и он работает очень хорошо. Я расскажу об этом примере в своем проекте. Там у меня есть требование, чтобы (chat-) группы могли динамически создаваться или удаляться/уничтожаться.WebSocket динамически добавляет и удаляет конечные точки

В моем WebsocketConfig- конечных точек класса может быть добавлен статический:

registry.addEndpoint("/hello").withSockJS(); (also see below) 

Есть ли возможность добавить оконечные динамически? Мой UseCase является то, что у меня есть компании и сотрудников, которые принадлежат к одной или нескольким компаниям:

  n  m (m:n relation) 

< компания --------> Сотрудники

и компании могут быть созданы динамически (нажав кнопку «создать»). Затем в компанию могут быть добавлены сотрудники, зарегистрированные ранее. Таким образом, это означает, что если компания создана (и к компании добавляется минимум 2 сотрудника), то следует добавить конечную точку.

Я был бы рад за любой полезный ответ в этом направлении. Спасибо большое!

@Configuration 
@EnableWebSocketMessageBroker 
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer { 

@Override 
public void configureMessageBroker(MessageBrokerRegistry config) { 
    // Prefix for messages FROM server TO client 
    config.enableSimpleBroker("/topic"); 
    // Prefix for messages FROM client TO server 
    config.setApplicationDestinationPrefixes("/app"); 
    // /app wird beim client - sendName verwendet: stompClient.send("/app/hello", {}, JSON.stringify({ 'name': name 
    // })); 
} 

@Override 
public void registerStompEndpoints(final StompEndpointRegistry registry) { 
    registry.addEndpoint("/hello").withSockJS(); 
    } 
} 

[Редактировать] Отправить сообщение для более чем одного клиента, но не ко всем. Это мой текущий код ниже. Отправить всем с одинаковым id отлично работает, но я не знаю, как отправить сообщение, например. 4 клиента. Спасибо за помощь!

@MessageMapping("/chat/{institutionId}") 
public void greeting(@DestinationVariable String institutionId, final GreetingHelloMessage message) throws Exception { 
    final Greeting greeting = new Greeting(institutionId, "Hello " + institutionId + " - " + message.getName()); 
    simpMessagingTemplate.convertAndSend("/topic/chat/" + institutionId, greeting); 
} 
+0

Я узнал это: [введите описание ссылки здесь] [1] [1]: http://stackoverflow.com/questions/21192091/dynamic-message-mapping- для-WebSockets в пружине-4 – quma

ответ

1

Вы должны взглянуть в направлении параметров пути.

Нет необходимости использовать разные конечные точки для каждого чата, если вы можете использовать конструкцию, такую ​​как localhost: 8080/chat/{GROUP_NAME}.