client-ws-socket-pool.js
1 import Client from '../index.js' 2 import common from './common.js' 3 import fixtures from 'webtorrent-fixtures' 4 import test from 'tape' 5 6 const peerId = Buffer.from('01234567890123456789') 7 const port = 6681 8 9 test('ensure client.destroy() callback is called with re-used websockets in socketPool', t => { 10 t.plan(4) 11 12 common.createServer(t, 'ws', (server, announceUrl) => { 13 const client1 = new Client({ 14 infoHash: fixtures.leaves.parsedTorrent.infoHash, 15 announce: announceUrl, 16 peerId, 17 port, 18 wrtc: {} 19 }) 20 21 common.mockWebsocketTracker(client1) 22 client1.on('error', err => { t.error(err) }) 23 client1.on('warning', err => { t.error(err) }) 24 25 client1.start() 26 27 client1.once('update', () => { 28 t.pass('got client1 update') 29 // second ws client using same announce url will re-use the same websocket 30 const client2 = new Client({ 31 infoHash: fixtures.alice.parsedTorrent.infoHash, // different info hash 32 announce: announceUrl, 33 peerId, 34 port, 35 wrtc: {} 36 }) 37 38 common.mockWebsocketTracker(client2) 39 client2.on('error', err => { t.error(err) }) 40 client2.on('warning', err => { t.error(err) }) 41 42 client2.start() 43 44 client2.once('update', () => { 45 t.pass('got client2 update') 46 client1.destroy(err => { 47 t.error(err, 'got client1 destroy callback') 48 client2.destroy(err => { 49 t.error(err, 'got client2 destroy callback') 50 server.close() 51 }) 52 }) 53 }) 54 }) 55 }) 56 })