From 284f67279b766d67551dee95cea83861f7e74212 Mon Sep 17 00:00:00 2001 From: cha0s Date: Thu, 25 Apr 2019 00:09:28 -0500 Subject: [PATCH] feat: socket-worker --- client/app.js | 8 ++++---- client/ui/debug/index.js | 22 ++++++++-------------- server/index.js | 4 ++-- webpack.client.config.js | 4 ++-- webpack.common.config.js | 9 +++++++-- yarn.lock | 21 ++++++++++++++++++--- 6 files changed, 41 insertions(+), 27 deletions(-) diff --git a/client/app.js b/client/app.js index 4110c57..d1890a4 100644 --- a/client/app.js +++ b/client/app.js @@ -7,7 +7,7 @@ import {Stage} from '@avocado/graphics'; import {ActionRegistry, InputPacket} from '@avocado/input'; import {Vector} from '@avocado/math'; import {EventEmitter, Property} from '@avocado/mixins'; -import {SocketClient} from '@avocado/net/client/socket'; +import {SocketClient} from '@avocado/net/client/socket-worker'; import {SocketIoParser} from '@avocado/net'; import { StateKeysPacket, @@ -93,7 +93,7 @@ export class App extends decorate(class {}) { this.pointingAt = [-1, -1]; this.pointerMovementHandle = undefined; // Net. - this.AugmentedParser = augmentParserWithThroughput(SocketIoParser); + // this.AugmentedParser = augmentParserWithThroughput(SocketIoParser); this.hasReceivedState = false; this.isConnected = false; this.socket = undefined; @@ -167,7 +167,7 @@ export class App extends decorate(class {}) { connect() { const config = this.readConfig(); this.socket = new SocketClient(config.connectionUrl, { - parser: this.AugmentedParser, + // parser: this.AugmentedParser, }); this.socket.on('connect', () => { this.removeFromDom(document.querySelector('.app')); @@ -428,7 +428,7 @@ export class App extends decorate(class {}) { const DebugUiComponent = ; diff --git a/client/ui/debug/index.js b/client/ui/debug/index.js index 9b15ebb..ad44ea2 100644 --- a/client/ui/debug/index.js +++ b/client/ui/debug/index.js @@ -8,7 +8,6 @@ import contempo from 'contempo'; // 1st party. import {usePropertyChange} from '../hooks/use-property-change'; import SelfEntity from './self-entity'; -import Connection from './connection'; import Timers from './timers'; const decorate = compose( @@ -17,11 +16,7 @@ const decorate = compose( ); const DebugUi = ({ - actionRegistry, app, - socket, - stage, - Parser, }) => { const [size, setSize] = useState([0, 0]); const [position, setPosition] = useState([0, 0]); @@ -30,20 +25,20 @@ const DebugUi = ({ // Sync debug UI size with stage size. useEffect(() => { const onStageResized = (size) => { - const rect = stage.element.getBoundingClientRect(); + const rect = app.stage.element.getBoundingClientRect(); setPosition([rect.left, rect.top]); setSize(size); - setTransformRatio(stage.transformRatio); + setTransformRatio(app.stage.transformRatio); }; - stage.on('displaySizeChanged', onStageResized); - onStageResized(stage.displaySize); + app.stage.on('displaySizeChanged', onStageResized); + onStageResized(app.stage.displaySize); return () => { - stage.off('displaySizeChanged', onStageResized); + app.stage.off('displaySizeChanged', onStageResized); }; }, []); // Scale stage when debugging. useEffect(() => { - stage.element.style.transform = `scale(${isDebugging ? '0.5' : '1'})`; + app.stage.element.style.transform = `scale(${isDebugging ? '0.5' : '1'})`; }, [isDebugging]); return isDebugging &&
-
diff --git a/server/index.js b/server/index.js index 25f20a6..8eab83f 100644 --- a/server/index.js +++ b/server/index.js @@ -3,7 +3,7 @@ import http from 'http'; // 2nd party. import {SocketServer} from '@avocado/net/server/socket'; // Import directly for HMR hierarchy. -import '../register-traits'; +import 'register-traits'; // Start game server. import Game from './game'; const socketServer = new SocketServer(); @@ -35,7 +35,7 @@ createGame(); if (module.hot) { module.hot.accept([ './game', - '../register-traits' + 'register-traits' ], () => { destroyGame(() => { createGame(); diff --git a/webpack.client.config.js b/webpack.client.config.js index 3a46a2a..f2ec55a 100644 --- a/webpack.client.config.js +++ b/webpack.client.config.js @@ -8,8 +8,8 @@ const config = require('./webpack.common.config'); config.entry = { client: [ '@babel/polyfill', - path.join(__dirname, 'register-packets.js'), - path.join(__dirname, 'register-traits.js'), + 'register-packets', + 'register-traits', '@avocado/behavior/item/initialize', path.join(__dirname, 'client', 'index.js'), ], diff --git a/webpack.common.config.js b/webpack.common.config.js index ff2ca24..00a7b68 100644 --- a/webpack.common.config.js +++ b/webpack.common.config.js @@ -16,7 +16,7 @@ const config = { }, }, { - test: /register-packets\.js/, + test: /register-packets\.js$/, use: { loader: './defgen', options: { @@ -35,7 +35,7 @@ const config = { }, }, { - test: /register-traits\.js/, + test: /register-traits\.js$/, use: { loader: './defgen', options: { @@ -53,11 +53,16 @@ const config = { ], }, output: { + globalObject: `(typeof self === 'undefined' ? this : self)`, path: path.resolve(__dirname, 'dist'), filename: '[name].js', }, plugins: [], resolve: { + alias: { + 'register-packets': path.resolve(__dirname, 'register-packets'), + 'register-traits': path.resolve(__dirname, 'register-traits'), + }, modules: [path.resolve(__dirname, 'node_modules')], }, resolveLoader: { diff --git a/yarn.lock b/yarn.lock index aec00d1..1476893 100644 --- a/yarn.lock +++ b/yarn.lock @@ -71,8 +71,8 @@ "@avocado/core" "1.x" "@avocado/net@^1.0.0": - version "1.0.0" - resolved "https://npm.i12e.cha0s.io/@avocado%2fnet/-/net-1.0.0.tgz#dc6b1bb090e52728fcd31233bcbbef78f42ed8c0" + version "1.0.1" + resolved "https://npm.i12e.cha0s.io/@avocado%2fnet/-/net-1.0.1.tgz#43d8eb5f567bea704bcaed88acd6fed7643a5338" dependencies: "@avocado/core" "1.x" "@avocado/mixins" "1.x" @@ -80,6 +80,7 @@ schemapack "1.4.2" socket.io "2.2.0" socket.io-client "2.2.0" + worker-loader "2.0.0" "@avocado/physics@1.x": version "1.0.3" @@ -2863,7 +2864,7 @@ loader-utils@^0.2.16: json5 "^0.5.0" object-assign "^4.0.1" -loader-utils@^1.0.2, loader-utils@^1.1.0: +loader-utils@^1.0.0, loader-utils@^1.0.2, loader-utils@^1.1.0: version "1.2.3" resolved "https://npm.i12e.cha0s.io/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" dependencies: @@ -3967,6 +3968,13 @@ scheduler@^0.13.6: loose-envify "^1.1.0" object-assign "^4.1.1" +schema-utils@^0.4.0: + version "0.4.7" + resolved "https://npm.i12e.cha0s.io/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187" + dependencies: + ajv "^6.1.0" + ajv-keywords "^3.1.0" + schema-utils@^1.0.0: version "1.0.0" resolved "https://npm.i12e.cha0s.io/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" @@ -4778,6 +4786,13 @@ worker-farm@^1.5.2: dependencies: errno "~0.1.7" +worker-loader@2.0.0: + version "2.0.0" + resolved "https://npm.i12e.cha0s.io/worker-loader/-/worker-loader-2.0.0.tgz#45fda3ef76aca815771a89107399ee4119b430ac" + dependencies: + loader-utils "^1.0.0" + schema-utils "^0.4.0" + wrap-ansi@^2.0.0: version "2.1.0" resolved "https://npm.i12e.cha0s.io/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"