import http from 'http'; import {Server} from '@avocado/server/socket'; // Import directly for HMR hierarchy. import '../register-traits'; // Start game server. import Game from './game'; const socketServer = new Server(); let game; let httpServer; function createGame() { game = new Game(); // Listen for connections. httpServer = http.createServer(); httpServer.listen(8420, '0.0.0.0'); socketServer.on('connect', game.acceptConnection, game); socketServer.open(httpServer); } function destroyGame(fn) { // Stop listening. socketServer.off('connect', game.acceptConnection); socketServer.close(() => { httpServer.close(() => { game.destroy(fn); }) }); } createGame(); if (module.hot) { module.hot.accept([ './game', '../register-traits' ], () => { destroyGame(() => { createGame(); }); }); }