import MessageHandler from './MessageHandler.js'
export default class ServerInteractor {
constructor(uri, objectManager, logger) { this.uri = uri; this.messageHandler = new MessageHandler(this, objectManager, logger); this.logger = logger; this.connect(); } connect() { const me = this; me.socket = new WebSocket("ws://" + me.uri); me.socket.onopen = function (event) { me.onOpen(event); }; me.socket.onmessage = function (event) { me.onMessage(event); }; me.socket.onclose = function (event) { me.onClose(event); }; me.socket.onerror = function (error) { me.onError(error); }; } send(message) { this.socket.send(JSON.stringify(message)); } onOpen(event) { this.logger.log("[ServerInteractor] Connection established"); } onMessage(event) { this.logger.log(`[ServerInteractor] Data received from server: ${event.data}`); this.messageHandler.handle(JSON.parse(event.data)); } onClose(event) { const me = this; if (event.wasClean) { me.logger.log(`[ServerInteractor] Connection closed cleanly, code=${event.code} reason=${event.reason}`); } else { me.logger.log("[ServerInteractor] Connection died."); } me.logger.log("[ServerInteractor] Attempting to reestablish connection...") setTimeout(function() { me.connect(); }, 5000); } onError(error) { this.logger.log(`[ServerInteractor] Received Error: ${error.message}`); }
}