在Node.js应用程序中自动重新连接Stomp.js
我正在使用Node.js和Express编写的应用程序,我试图使用Stomp.js客户端连接到ActiveMQ服务器。
我可以使用Stomp将应用程序连接到ActiveMQ,但是我无法让系统在连接失败时自动重新连接。 看起来只有当连接初始成功,然后被切断时才调用失败函数,但是如果在Node应用程序启动时ActiveMQ已经closures,我会看到certificate失败函数被调用的错误消息。
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只能打开一次。 如果networking出现故障,与相同的StompClient重新连接将无法工作,因为networking套接字将保持closures状态。
这肯定可以通过stomp.js来改善,但同时你可以通过在检测到失败时重新创build一个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); }
- 我得到“断言失败:查询API时,必须在传递给”push“的散列中包含”id“
- 为什么expressjs每个OPTIONS响应都发送Set-Cookie头?
- 从expres传递数组到jade客户端的javascript
- 没有使用不同的端口号,Socket.io不支持Express 4
- NodeJS:有没有办法从另一台服务器stream式传输文件,而不通过我的pipe道?
- 无法获得PUT在Nodejs / express上工作
- 在Express.js中为什么res.json()之后的代码仍然执行?
- Nodejs使用npm安装hiredis。 获取错误
- Nodejs应用程序错误:使用pm2部署时绑定EADDRINUSE