gamesocket.io
Version:
Simple event-oriented API for uWebSocket.js
48 lines (47 loc) • 1.54 kB
JavaScript
var __importDefault =
(this && this.__importDefault) ||
function (mod) {
return mod && mod.__esModule ? mod : { default: mod }
}
Object.defineProperty(exports, '__esModule', { value: true })
exports.DataManager = void 0
const uuid_1 = require('uuid')
const DataEscort_js_1 = require('./DataEscort/DataEscort.js')
const node_string_decoder_1 = require('node:string_decoder')
const Logger_js_1 = __importDefault(require('../Logger/Logger.js'))
const decoder = new node_string_decoder_1.StringDecoder('utf8')
class DataManager {
static _escorts = new Map()
static spawn(event, data) {
const newID = this.createID()
let escort = new DataEscort_js_1.DataEscort(newID, event, data)
this._escorts.set(newID, escort)
if (Logger_js_1.default.flags.trace)
Logger_js_1.default.trace(`Spawned escort with id "${newID}"\n\tInner data is: ${JSON.stringify(data)}`)
return escort
}
static get(id) {
return this._escorts.get(id)
}
static drop(entity) {
if (typeof entity == 'string') return this._escorts.delete(entity)
return this._escorts.delete(entity.id)
}
static createID() {
return (0, uuid_1.v4)()
}
static decode(buffer) {
if (!(buffer instanceof ArrayBuffer)) Logger_js_1.default.fatal('Socket message must be ArrayBuffer')
else {
let data = decoder.write(Buffer.from(buffer))
try {
let jsonData = JSON.parse(data)
return jsonData
} catch (E) {
return data
}
}
}
}
exports.DataManager = DataManager