node.js - 带有 SockJS (NodeJS) + STOMP 客户端的 Websockets 服务器

标签 node.js websocket stomp sockjs

我有一个带有 sockjs 套接字的 Node 应用程序。

一些 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.notify。我们如何配置主题订阅?

编辑:

请注意,我很清楚。

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

配置不多:

echo.installHandlers(server, {prefix:'/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];
    });
});

客户端在 sockJS 客户端上使用 stomp 协议(protocol)。

它们接收消息(关于客户端日志),但它们与“主题”无关且未被解析。

我不了解订阅的工作原理以及如何在服务器端使用 sockjs 配置它。

最佳答案

订阅基于目的地。默认模式是 /exchange/routingkey

在你的例子中是 /topic/notify 这意味着你订阅默认交换 topic routingkey 将是 notify

关于node.js - 带有 SockJS (NodeJS) + STOMP 客户端的 Websockets 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33506593/

相关文章:

spring - Spring 4 AbstractWebSocketMessageBrokerConfigurer与SockJS无法正确协商传输

javascript promise 池化连接并执行查询

node.js - WebStorm:JavaScript 中的导入/导出语句

mysql - Node Express mysql 连接错误处理优化

javascript - 'opcode -1' 在 Chrome 中是什么意思?

python - 如何使用 STOMP 配置 ActiveMQ?

node.js - 如何在cheerio.js中获取 Node 行号?

php - 从本地主机到实时服务器的 PHP 套接字编程

python - gunicorn 和 websockets

java - ActiveMQ 中的跨语言支持