在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