bedrock-protocol/test/proxy.js
2021-04-23 03:23:43 -04:00

59 lines
1.5 KiB
JavaScript

const { createClient, createServer, Relay } = require('bedrock-protocol')
const { sleep, waitFor } = require('../src/datatypes/util')
function proxyTest (version, timeout = 1000 * 20) {
return waitFor(res => {
const server = createServer({
host: '0.0.0.0', // optional
port: 19131, // optional
offline: true,
version // The server version
})
server.on('connect', client => {
client.on('join', () => { // The client has joined the server.
setTimeout(() => {
client.disconnect('Hello world !')
}, 1000) // allow some time for client to connect
})
})
console.debug('Server started', server.options.version)
const relay = new Relay({
version,
offline: true,
/* host and port for clients to listen to */
host: '0.0.0.0',
port: 19132,
/* Where to send upstream packets to */
destination: {
host: '127.0.0.1',
port: 19131
}
})
relay.conLog = console.debug
relay.listen()
console.debug('Proxy started', server.options.version)
const client = createClient({ host: '127.0.0.1', version, username: 'Boat', offline: true })
console.debug('Client started')
client.on('disconnect', packet => {
console.assert(packet.message === 'Hello world !')
server.close()
relay.close()
console.log('✔ OK')
sleep(500).then(res)
})
}, timeout, () => { throw Error('timed out') })
}
if (!module.parent) {
proxyTest('1.16.220')
}
module.exports = { proxyTest }