-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpromises-single-address-example.js
66 lines (55 loc) · 1.74 KB
/
promises-single-address-example.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/*
* Cocker example, connect to a socket, through native Prmoises,
* using Cocker#hunt and Cocker#die. When the last #hunt call fails
* to connect, Promise will be rejected (and catched).
*/
var log = console.log
, assert = require( 'assert' )
, net = require( 'net' )
, server = net.createServer()
, Cocker = require( '../' )
, trials = 4
, port = 63800
, opt = {
address : {
port : port
}
, reconnection : {
trials : trials
, interval : 200
}
}
, attempts = 0
, ck = Cocker( opt )
, handle = ( v ) => {
let caddr = v.address()
;
log( '- server: new connection from', caddr );
v.on( 'close', () =>
log( '- server: closed connection!', caddr )
);
}
;
// log Cocker events
ck.on( 'online', ( addr ) => log( '-> cocker: online!' ) );
ck.on( 'attempt', ( t, addr, lapse ) =>
log( '- cocker: (%d) attempt (%ds)', t, lapse / 1000 ) );
ck.on( 'offline', ( addr, haderr ) => log( '- cocker: offline!' ) );
ck.on( 'close', ( v ) => log( '- cocker: close!' ) );
ck.on( 'lost', ( v ) => log( '- cocker: lost!' ) );
// run hunt before server is listening
ck.hunt().then( ( addr ) => {
log( '- cocker: connected to', addr );
log( '- cocker: now I will die!' );
return ck.die();
} ).then( ( addr ) => {
log( '- cocker: disconnected from', addr );
server.close();
log( '- cocker: try to reconnect to:', ck.options.address );
return ck.hunt();
} ).catch( ( reason ) => log( '\n- error catched:', reason, '\n' ) );
server.on( 'close', () => log( '- server: I close!' ) );
// handle socket connection
server.on( 'connection', handle );
// listen
server.listen( port );