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

我正在使用用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();

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

回答:

Stomp.client拥有的WebSocket只能打开一次。如果出现网络故障,则由于Web套接字将保持关闭状态,因此无法使用相同的StompClient重新连接。

绝对可以通过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);

}

以上是 在Node.js应用程序中自动与Stomp.js重新连接 的全部内容, 来源链接: utcz.com/qa/426950.html

回到顶部