[英]Prevent NodeJS from exiting event-loop
嘿哈瓦用谷歌搜索並嘗試了所有方法-但似乎沒有任何效果,所以現在我要問你們:
我如何制作我的Node應用程序。 從停止退出-當我希望它繼續運行並等待Web套接字連接的響應時? 如您所見,我在“ PreventExit”功能中嘗試了其他操作。 我只想要該應用程序。 以保持從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:
我的Web套接字提供商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日。有關新端點,請參見下面的文檔。
您可以執行以下操作-創建一個重新注冊自身的超時:
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退出可能無法解決您的問題- 它只會等待什么都不會發生 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.