当前位置: 首页 > 知识库问答 >
问题:

带有STOMP、SOCKJS和ACTIVEMQ的Spring websocket

别子实
2023-03-14

我们正在将SpringWebSockets集成到我们的应用程序中,我运行了HelloWorld示例,令人惊讶的是,spring为我们连接了一切,以便将服务器端通知推送到客户端。

不过,我有一些简单的问题

1) 队列是如何创建的?我使用的是ActiveMQ,队列名称与我在目的地中指定的不同(例如,像greetings-user3n9\u jn3i)。

simpMessageSendingOperations.convertAndSend("/test/greeting", new Greeting("Hello Socket Listener!"));

2)目标名称是否不同于队列?

3) 我正在使用ActiveMQ控制台创建新的队列,例如/test1/问候语和发送,我正在客户端订阅它们,如图所示

var stompClient = null;

connect();

function connect() {
    var socket = new SockJS(stompUrl);
    stompClient = Stomp.over(socket);
    stompClient.connect({}, function(frame) {
        console.log('Connected: ' + frame);
        stompClient.subscribe('/user/queue/greetings', function(greeting){
            alert(greeting);
        });
    });
}

 function disconnect() {
        if (stompClient != null) {
            stompClient.disconnect();
        }
        setConnected(false);
        console.log("Disconnected");
    }

$("#lstnMsgsBtn").click(function() {
    $.ajax({
        url: testUrl,
        type: "POST",
        success: function(data) {

            var queueName = data.queueName;

            stompClient.subscribe(queueName, function(greeting){
                alert(greeting);
            });
        },
        error : function(jqXhr, textStatus, errorThrown) {
            alert(errorThrown);
        }
    });
});

我无法订阅queueName,我很确定我的想法是错误的,任何指针都将不胜感激。

共有1个答案

宋涵忍
2023-03-14

>

  • 我与RabbitMq合作过,他们在文档中解释了如何解析目标模式。我认为它在activemq中非常相似。通常是这样的

    /exchange/routingkey
    

    队列将为每个订户动态生成,并通过路由密钥绑定到exchange。但您也可以指定队列。您必须遵循exchange指定的语法。

    我想上面也回答了这个问题。

  •  类似资料:
    • 问题内容: 有没有一种方法可以将WebSocket与SockJS客户端和Spring 4服务器一起使用,而不能与STOMP一起使用? 基于Spring网站上的本教程,我知道如何使用Stomp和Spring 4设置基于WebSocket的应用程序。在客户端,我们有: 在服务器端,控制器中包含以下内容: 现在,我了解可以确保如果将消息发送到目的地,则将调用该方法。并且由于已订阅,因此会将邮件发送回。

    • 根据Spring网站上的这个教程,我知道了如何使用Stomp和Spring4建立一个基于WebSocket的应用程序。在客户端,我们有: 在服务器端,控制器中有以下内容: 现在,我明白了确保如果消息发送到目标,那么将调用方法。由于订阅了,将消息发送回。 那么,有什么方法可以用Spring4、SockJS和没有跺脚的情况下做到这一点呢?还是Spring4WebSocket只支持stomp?

    • 我正在将Spring网络套接字集成到一个网络应用程序中。我想将其用于在 ajax 中花费很长时间的两个调用。根据我的理解,我看到关于我如何处理有不同的设计选择。我正在考虑以下内容,您能否让我知道什么是最佳选择,如果是,为什么 1)一旦用户通过SockJS登录到应用程序,就打开一个套接字连接,并使用该连接来发送消息和订阅我想要拨打的两个电话。我对这个设计的一个疑问是,如果用户关闭浏览器,套接字连接会

    • 我有一个带sokjs套接字的节点应用程序。 一些HTML/JS客户端使用stomp over sock JS,但我不明白订阅是如何工作的: 客户端已连接,事件已记录,但范围为$scope。从不打电话通知。如何配置主题订阅? 编辑: 请注意,我一定清楚。 我使用sockjs模块作为websocket服务器。 没有太多的配置:

    • 任何帮助都将不胜感激。 提前谢了。

    • 我有支持SpringWebSocket的Spring服务器。我想使用STOMP子协议来处理web套接字上的通信,因此STOMPendpoint的配置如下所示: Spring文档和我能找到的关于这个主题的基本资源展示了如何使用SockJS StompJS创建STOMP客户端。它可以工作,但据我所知,根本不需要它——因为STOMP只是一个子协议,我应该能够通过使用STOMP消息语法,基本上从任何web