На разные websockets приходят одни и те же данные

 
 
 
Сообщения:11
Добрый день. Предположим, есть два веб-сокета ws://localhost:8080/room1 и ws://localhost:8080/room2

    
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {

    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config.enableSimpleBroker("/topic");
        config.setApplicationDestinationPrefixes("/app");
    }

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/room1");
        registry.addEndpoint("/room2");
    }

    ...


В js я подключаюсь к обоим с двух вкладок и делаю subscribe на /topic/greetings.

 
      var url = "ws://localhost:8080/room1";
    client1 = Stomp.client(url);
    client1.connect({
        'client-id': 'my-client-id'
    }, function() {

        client1.subscribe('/topic/greetings', function(greeting) {
            console.log("Client 1 has a message");
        });

        console.log('connected');
    }, function() {
        console.log("Connection error");
    });

    var url = "ws://localhost:8080/room1";
    client2 = Stomp.client(url);
    client2.connect({
        'client-id': 'my-client-id'
    }, function() {

        client2.subscribe('/topic/greetings', function(greeting) {
            console.log("Client 2 has a message");
        });

        console.log('connected');
    }, function() {
        console.log("Connection error");
    });


Потом отправив сообщение из первой вкладки в room1, сообщение приходит в room1 и room2 на обоих вкладках.

    $("#send").on('click', function(){
        client1.send("/app/hello", {}, JSON.stringify({'name': "123"}));
    });


Парни, как мне сделать, чтобы я получал сообщение только в room1?
Изменен:09 окт 2016 10:17
 
 
Сообщения:11
Блин, но может хоть какие-нибудь мысли есть у кого-то?)
 
 
Сообщения:158
В коде "client1" и "client2" подписаны на один и тот же топик "/topic/greetings". Контроллер, скорее всего, отправляет ответ только на него, поэтому Вы и получаете сообщения в обоих клиентах.

P/S: что Вы имеете в виду под вкладками?
 
 
Сообщения:11
Вкладки браузера.

Я не очень силен в java и spring, но суть такая что в проекте есть 2 статичныx файла в resources/static - index.html и app.js. Потом я обращаюсь к localhost:8080 и получаю страницу. Документация, с которой я начал тут.

vps:
В коде "client1" и "client2" подписаны на один и тот же топик "/topic/greetings"


Похоже на правду, только тогда в чем смысл регистрировать новые endpoint? Тогда, получается, надо создавать пути вроде /room1/topic/greeting или как-то при отдаче ответа определять откуда был запрос. Мне кажется должна быть поддержка таких вещей "из коробки".
 
 
Сообщения:158
Про websockets можно ещё почитать в книге: "Spring 4 для профессионалов". Можно найти на просторах интернета.
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет