自动重新连接Node.js应用程序中的Stomp.js

 露絲瑪麗蓮夢露_533 发布于 2023-01-18 14:16

我正在使用Node.js和Express编写的应用程序,我正在尝试使用Stomp.js客户端连接到ActiveMQ服务器.

我可以使用Stomp将应用程序连接到ActiveMQ,但我无法让系统在连接失败时自动重新连接.似乎只有在连接最初成功然后被切断时才调用失败函数,但是如果在Node应用程序启动时ActiveMQ已经关闭,我确实看到了证明失败函数被调用的错误消息.

var Stomp = require('stompjs');
var stompClient = Stomp.overTCP('localhost', 61612);
var stompStatus = false;

var stompSuccessCallback = function (frame) {
    stompStatus = true;
    console.log('STOMP: Connection successful');
};

var stompFailureCallback = function (error) {
    stompStatus = false;
    console.log('STOMP: ' + error);

    setTimeout(stompConnect, 10000);
    console.log('STOMP: Reconecting in 10 seconds');
};

function stompConnect() {
    console.log('STOMP: Attempting connection');
    stompClient.connect('login', 'password', stompSuccessCallback, stompFailureCallback);

}

stompConnect();

有没有人知道这里发生了什么?

1 个回答
  • Stomp.client持有的WebSocket只能打开一次.如果网络出现故障,则重新连接相同的StompClient将无法正常工作,因为Web套接字将保持关闭状态.

    这肯定可以通过stomp.js来改进,但同时,您可以通过在检测到故障时重新创建Stomp.client来解决此问题.就像是:

    var stompClient;
    
    var stompFailureCallback = function (error) {
        console.log('STOMP: ' + error);
        setTimeout(stompConnect, 10000);
        console.log('STOMP: Reconecting in 10 seconds');
    };
    
    function stompConnect() {
        console.log('STOMP: Attempting connection');
        // recreate the stompClient to use a new WebSocket
        stompClient = Stomp.overTCP('localhost', 61612);
        stompClient.connect('login', 'password', stompSuccessCallback, stompFailureCallback);
    }
    

    2023-01-18 14:18 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有