【发布时间】:2017-11-01 04:05:26
【问题描述】:
背景
我正在尝试使用来自 Node.js 的 net.Socket 连接到机器。有时连接正常,我成功了,有时连接断开,所以我不断重试。
目标
我想写一个reconnect 方法,尝试连接到一个IP。当它成功时,它会解决,但如果它失败,它应该继续尝试。
代码
const reconnect = function ( connectOpts ) {
return new Promise( resolve => {
connect( connectOpts )
.then( () => {
console.log( "CONNECTED " );
resolve();
} )
.catch( () => {
console.log( "RETRYING" );
connect( connectOpts );
} );
} );
};
const connect = function ( connectOpts ) {
return new Promise( ( resolve, reject ) => {
socket = net.createConnection( connectOpts );
//once I receive the 1st bytes of data, I resolve();
socket.once( "data", () => {
resolve();
} );
socket.once( "error", err => reject( err ) );
} );
};
reconnect({host: localhost, port: 8080})
.then(() => console.log("I made it!"));
问题
问题是当连接失败时,它只尝试了一次,然后就炸了!
问题
如何更改我的代码,以便在每次失败时都能重新连接? PS:重要的是此功能是异步!
【问题讨论】:
标签: javascript node.js sockets