如何制作我的节点应用。从停止退出 - 当我喜欢它继续运行并等待来自Web Socket连接的响应? 正如你所看到的,我在“预防退出”中尝试了不同的东西。功能。我只想要这款应用。继续从Web套接字连接接收数据 - 不关闭/退出。
var Gdax = require('gdax');
var WSemitter = require('../eventemitters/websocket-emitter');
module.exports = {
initws: function () {
var WebSocketEmit = new WSemitter();
test();
function test() {
try {
PreventExit();
var websocket = new Gdax.WebsocketClient();
websocket.on('message', function (data) {
console.log(data);
WebSocketEmit.fakeEvent();
});
}
catch (err) {
console.log(err);
}
}
function PreventExit(){
WebSocketEmit.on('fakeEvent', function () {
console.log('Just fake - to keep node running!');
});
setTimeout(function(){}, 100000);
process.stdin.resume();
}
}
}
UPDATE1:
My Web Socket提供商CoinBase最近更新了他们的API。从Coinbase-exchange到Gdax。我只是想替换:
var Gdax = require('gdax');
var CoinbaseExchange = require('coinbase-exchange');
//var websocket = new Gdax.WebsocketClient();
var websocket = new CoinbaseExchange.WebsocketClient();
现在我的应用程序等了!但只有1个收到json对象后我的节点应用程序仍然退出!我如何让它保持开放而不仅仅是关闭?但是继续从API接收数据?
更新2
当我删除所有测试代码并且只有与API相关的代码时,它可以工作 - 但只能使用旧代码... coinbase-exchange ??所以它必须是新的(gdax)API或什么错误?但是没有抛出异常??
请参阅此处的文档:
https://www.npmjs.com/package/coinbase-exchange#websocket-client
https://www.npmjs.com/package/gdax#websocket-client
此外,DOC状态(这没有任何意义 - 当它只是旧的API仍然有效时):
GDAX过渡 作为将Coinbase Exchange重新命名为GDAX的一部分,API端点已发生变化。旧的* .exchange.coinbase.com端点将继续工作至2016年8月24日。对于新端点,请参阅下面的文档。
答案 0 :(得分:2)
你可以这样做 - 创建一个重新注册的超时:
var t;
function nt() {
t = setTimeout(nt, 10000);
}
nt();
每次都可以通过拨打clearTimeout
将其关闭。例如,要在2秒后退出程序,可以添加:
setTimeout(function () {
clearTimeout(t);
}, 2000);
所以它甚至不必等待那些完整的10秒(或任何间隔)完成。
您可以使用setInterval
:
var i = setInterval(()=>{}, 10000);
您可以使用clearInterval
取消它:
setTimeout(function () {
clearInterval(i);
}, 2000);
但如果您的流程退出,那么很有可能它会这样做,因为它不再等待任何事情发生,这才是真正的问题。因此,保持Node退出可能无法解决您的问题 - 它只会等待没有任何事情发生。