mirror of
https://github.com/Xahau/xahau.js.git
synced 2025-11-20 20:25:48 +00:00
Merge pull request #562 from wltsmrz/add-reconnect-test
Add test for Server automatic reconnection
This commit is contained in:
@@ -1249,4 +1249,71 @@ describe('Server', function() {
|
||||
|
||||
server.connect();
|
||||
});
|
||||
|
||||
it('Automatic reconnect', function(done) {
|
||||
const port = 5748;
|
||||
let connections = 0;
|
||||
|
||||
function handleWsConnection(_ws) {
|
||||
++connections;
|
||||
|
||||
_ws.on('message', (message) => {
|
||||
const parsed = JSON.parse(message);
|
||||
assert.strictEqual(parsed.command, 'subscribe');
|
||||
|
||||
_ws.send(JSON.stringify({
|
||||
id: parsed.id,
|
||||
status: 'success',
|
||||
type: 'response',
|
||||
result: {
|
||||
fee_base: 10,
|
||||
fee_ref: 10,
|
||||
ledger_hash:
|
||||
'1838539EE12463C36F2C53B079D807C697E3D93A1936B717E565A4A912E11776',
|
||||
ledger_index: 7053695,
|
||||
ledger_time: 455414390,
|
||||
load_base: 256,
|
||||
load_factor: 256,
|
||||
random:
|
||||
'E56C9154D9BE94D49C581179356C2E084E16D18D74E8B09093F2D61207625E6A',
|
||||
reserve_base: 20000000,
|
||||
reserve_inc: 5000000,
|
||||
server_status: 'full',
|
||||
validated_ledgers: '32570-7053695',
|
||||
pubkey_node: 'n94pSqypSfddzAVj9qoezHyUoetsrMnwgNuBqRJ3WHvM8aMMf7rW'
|
||||
}
|
||||
}));
|
||||
});
|
||||
}
|
||||
|
||||
let wss = new ws.Server({port});
|
||||
|
||||
wss.once('connection', handleWsConnection);
|
||||
|
||||
const remote = new Remote();
|
||||
const server = remote.addServer(`ws://localhost:${port}`);
|
||||
|
||||
let receivedReconnectAttempt = false;
|
||||
server.once('disconnect', () => {
|
||||
assert.equal(remote.getServer(), null);
|
||||
server.once('connect', () => {
|
||||
assert(receivedReconnectAttempt);
|
||||
assert.equal(connections, 2);
|
||||
assert(remote.getServer() instanceof Server);
|
||||
done();
|
||||
});
|
||||
server.once('connecting', () => {
|
||||
receivedReconnectAttempt = true;
|
||||
wss = new ws.Server({port});
|
||||
wss.once('connection', handleWsConnection);
|
||||
});
|
||||
});
|
||||
server.once('connect', () => {
|
||||
assert(remote.getServer() instanceof Server);
|
||||
// Force server disconnect, ripple-lib should attempt
|
||||
// to reconnect automatically
|
||||
wss.close();
|
||||
});
|
||||
server.connect();
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user