使用不带Socket.IO的RabbitMQ Web STOMP插件将事件发送给特定的浏览器/用户

时间:2015-01-02 12:56:47

标签: rabbitmq amqp

我已经使用RabbitMQ连接连接了4个浏览器。现在我想将事件广播发送到特定的浏览器。有可能吗?

我通过以下代码

向所有浏览器发送事件
 function test(){
      data = $('#msg').val();
      client.send('/topic/testMessage', {"content-type":"text/plain"}, data);  
      // exchange - routingkey    /temp-queue, /exchange, /topic, /queue, /amq/queue, /reply-queue/ 
  }
  var on_connect = function(x) { 
      id = client.subscribe("/topic/testMessage", function(d) {
           print_first(d.body);
      });    
  };

我如何向特定浏览器/用户发送请求?是否可以将事件播放到单个浏览器?

1 个答案:

答案 0 :(得分:2)

您可以通过以下方式更改订阅来将事件发送到浏览器中的特定浏览器/特定标签:

client.subscribe("/topic/testMessage");

client.subscribe("/topic/testMessage" + browserId); 

其中browserId将是浏览器中选项卡的uniqueId,服务器会将结果推送到交换机上,并在路由密钥中附加此browserId。

目前您正在使用commonId(testMessage),以及为什么所有浏览器都使用此路由密钥进行交换,因此所有浏览器都会收到消息。