From 3c23add812bb9a3b533bbf5e685deba77396dbb7 Mon Sep 17 00:00:00 2001 From: extremeheat Date: Sat, 22 Apr 2023 17:47:39 -0400 Subject: [PATCH] Fix raknet backend selection (#379) --- src/client.js | 2 +- src/rak.js | 36 +++++++++++++++++++++++------------- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/src/client.js b/src/client.js index d54a813..b6bb0ac 100644 --- a/src/client.js +++ b/src/client.js @@ -112,7 +112,7 @@ class Client extends Connection { this.connectTimeout = setTimeout(() => { if (this.status === ClientStatus.Disconnected) { this.connection.close() - this.emit('error', 'connect timed out') + this.emit('error', Error('Connect timed out')) } }, this.options.connectTimeout || 9000) } diff --git a/src/rak.js b/src/rak.js index 35e82cf..ace74af 100644 --- a/src/rak.js +++ b/src/rak.js @@ -5,22 +5,32 @@ const { waitFor } = require('./datatypes/util') let Client, Server, PacketPriority, EncapsulatedPacket, PacketReliability, Reliability class RakTimeout extends Error {}; -module.exports = (backend) => { - try { - if (backend === 'jsp-raknet') { +function setBackend (backend) { + // We have to explicitly require the backend for bundlers + switch (backend) { + case 'raknet-node': + ({ Client, Server, PacketPriority, PacketReliability } = require('raknet-node')) + return { RakServer: RakNativeServer, RakClient: RakNativeClient, RakTimeout } + case 'raknet-native': + ({ Client, Server, PacketPriority, PacketReliability } = require('raknet-native')) + return { RakServer: RakNativeServer, RakClient: RakNativeClient, RakTimeout } + case 'jsp-raknet': ({ Client, Server, EncapsulatedPacket, Reliability } = require('jsp-raknet')) return { RakServer: RakJsServer, RakClient: RakJsClient, RakTimeout } - } - // We need to explicitly name the require()s for bundlers - if (backend === 'raknet-node') ({ Client, Server, PacketPriority, PacketReliability } = require('raknet-node')) - if (backend === 'raknet-native') ({ Client, Server, PacketPriority, PacketReliability } = require('raknet-native')) - else ({ Client, Server, PacketPriority, PacketReliability } = require(backend)) - return { RakServer: RakNativeServer, RakClient: RakNativeClient, RakTimeout } - } catch (e) { - ({ Client, Server, EncapsulatedPacket, Reliability } = require('jsp-raknet')) - console.debug('[raknet] ' + backend + ' library not found, defaulting to jsp-raknet. Correct the "raknetBackend" option to avoid this error.', e) } - return { RakServer: RakJsServer, RakClient: RakJsClient, RakTimeout } +} + +module.exports = (backend) => { + if (backend) { + return setBackend(backend) + } else { + try { + return setBackend('raknet-native') + } catch (e) { + console.debug(`[raknet] ${backend} library not found, defaulting to jsp-raknet. Correct the "raknetBackend" option to avoid this error.`, e) + return setBackend('jsp-raknet') + } + } } class RakNativeClient extends EventEmitter {