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

带有SockJS(NodeJS)STOMP客户端的Websockets服务器

楚流觞
2023-03-14

我有一个带sokjs套接字的节点应用程序。

一些HTML/JS客户端使用stomp over sock JS,但我不明白订阅是如何工作的:

$scope.initSockets = function() {
    $scope.socket.client = new SockJS('http://localhost:8080/websockets'); => WORKS

    $scope.socket.stomp = Stomp.over($scope.socket.client);
    $scope.socket.stomp.connect({}, function() {
        $scope.socket.stomp.subscribe("/topic", $scope.notify); => NOTIFY Is never called
    });
    $scope.socket.client.onclose = $scope.reconnect;
};

客户端已连接,事件已记录,但范围为$scope。从不打电话通知。如何配置主题订阅?

编辑:

请注意,我一定清楚。

我使用sockjs模块作为websocket服务器

没有太多的配置:

echo。installHandlers(服务器,{前缀:'/websockets'})

 // on new connection event
echo.on('connection', function(conn) {

    console.log('New client connected : ' + conn.id);

    // add this client to clients object
    clients[conn.id] = conn;

    // on connection close event
    conn.on('close', function() {
        console.log('Client disconnected ' + conn.id);
        delete clients[conn.id];
    });
});

客户端在ockJS客户端上使用踩踏协议。

它们接收消息(关于客户机日志),但它们与“主题”无关,也不会被解析。

我不明白订阅是如何工作的,以及如何在服务器端配置它。


共有1个答案

鱼恩
2023-03-14

订阅根据目的地工作。默认模式是/exchange/routingkey

在您的情况下,它是/topic/notify,这意味着您订阅的默认exchangetopic路由键将是notify

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

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

  • 我们正在将SpringWebSockets集成到我们的应用程序中,我运行了HelloWorld示例,令人惊讶的是,spring为我们连接了一切,以便将服务器端通知推送到客户端。 不过,我有一些简单的问题 1) 队列是如何创建的?我使用的是ActiveMQ,队列名称与我在目的地中指定的不同(例如,像greetings-user3n9\u jn3i)。 2)目标名称是否不同于队列? 3) 我正在使用A

  • 我有一个问题——我有一个带有websocket的java spring web应用程序,在本教程之后是sockjs实现https://spring.io/guides/gs/messaging-stomp-websocket/我需要用NodeJS连接到这个服务器应用程序。服务器应用程序是正常的,因为我设法通过web应用程序连接,它正在工作,但问题来了,当我试图实现它的nodejs。因此,要明确这一

  • 我有一个来自http工具包的Websocket连接(Clojure,它工作得很好)。我从客户端发送ping以确保我们仍然保持连接,并且在那里一切正常。我的问题是,在这种情况下,人们是否会从服务器ping客户端? 我试图设置一些东西,如果我没有得到响应,就从服务器上删除频道,但是设置定时进程和改变状态来跟踪乒乓周期不是很方便,所以它变得有点难看。然后我就想,服务器能处理几十万个同时连接,我是不是就应

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