Restore and organize wonders-server
This commit is contained in:
parent
a19445e88e
commit
e721b8f357
23
packages/wonders-server/.eslintrc.json
Normal file
23
packages/wonders-server/.eslintrc.json
Normal file
@ -0,0 +1,23 @@
|
||||
{
|
||||
"env": {
|
||||
"es2021": true,
|
||||
"node": true
|
||||
},
|
||||
"extends": [
|
||||
"standard"
|
||||
],
|
||||
"parser": "@typescript-eslint/parser",
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 12,
|
||||
"sourceType": "module"
|
||||
},
|
||||
"plugins": [
|
||||
"@typescript-eslint"
|
||||
],
|
||||
"rules": {
|
||||
"comma-dangle": ["error", "only-multiline"],
|
||||
"padded-blocks": "warn",
|
||||
"no-multiple-empty-lines": "warn",
|
||||
"space-before-function-paren": "off"
|
||||
}
|
||||
}
|
||||
20
packages/wonders-server/Dockerfile
Normal file
20
packages/wonders-server/Dockerfile
Normal file
@ -0,0 +1,20 @@
|
||||
FROM node:16-alpine
|
||||
|
||||
RUN apk add --no-cache tini
|
||||
|
||||
RUN yarn global add lerna
|
||||
|
||||
WORKDIR /opt/wonders-server
|
||||
COPY packages/ketchup-common/package.json packages/ketchup-common/
|
||||
COPY packages/ketchup-server/package.json packages/ketchup-server/
|
||||
COPY packages/wonders-common/package.json packages/wonders-common/
|
||||
COPY packages/wonders-server/package.json packages/wonders-server/
|
||||
COPY package.json yarn.lock lerna.json ./
|
||||
RUN lerna bootstrap
|
||||
|
||||
COPY . ./
|
||||
RUN lerna run build
|
||||
|
||||
ENTRYPOINT ["tini", "--"]
|
||||
CMD ["node", "packages/wonders-server"]
|
||||
EXPOSE 80
|
||||
36
packages/wonders-server/package.json
Normal file
36
packages/wonders-server/package.json
Normal file
@ -0,0 +1,36 @@
|
||||
{
|
||||
"name": "wonders-server",
|
||||
"version": "0.1.3",
|
||||
"description": "WebSocket-based rollback state synchronization server.",
|
||||
"main": "dist/index.js",
|
||||
"license": "MIT",
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"ketchup-server": "^0.1.1",
|
||||
"lodash": "^4.17.20",
|
||||
"wonders-common": "^0.1.1",
|
||||
"ts-node": "^9.1.1",
|
||||
"ws": "^7.4.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@tsconfig/node14": "^1.0.0",
|
||||
"@types/jest": "^26.0.20",
|
||||
"@types/lodash": "^4.14.168",
|
||||
"@types/node": "^14.14.22",
|
||||
"@types/ws": "^7.4.0",
|
||||
"@typescript-eslint/eslint-plugin": "^4.14.1",
|
||||
"@typescript-eslint/parser": "^4.14.1",
|
||||
"eslint": "^7.18.0",
|
||||
"jest": "^26.6.3",
|
||||
"ts-jest": "^26.5.0",
|
||||
"typescript": "^4.1.3"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"bufferutil": "^4.0.3",
|
||||
"utf-8-validate": "^5.0.4"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "tsc --declaration",
|
||||
"start": "node dist"
|
||||
}
|
||||
}
|
||||
22
packages/wonders-server/src/index.ts
Normal file
22
packages/wonders-server/src/index.ts
Normal file
@ -0,0 +1,22 @@
|
||||
import WebSocket from 'ws'
|
||||
import KetchupServer from 'ketchup-server'
|
||||
import { initial, reducer } from 'wonders-common'
|
||||
|
||||
const port = parseInt(process.env.PORT ?? '80')
|
||||
|
||||
const wss = new WebSocket.Server({ port })
|
||||
|
||||
const ks = new KetchupServer(initial, reducer)
|
||||
|
||||
wss.on('connection', ws => {
|
||||
ks.addRemoteClient(ws)
|
||||
})
|
||||
|
||||
console.log(`Listening on ${port}`)
|
||||
|
||||
function shutdown() {
|
||||
console.log('Shutting down')
|
||||
wss.close()
|
||||
}
|
||||
process.on('SIGINT', shutdown)
|
||||
process.on('SIGTERM', shutdown)
|
||||
7
packages/wonders-server/tsconfig.json
Normal file
7
packages/wonders-server/tsconfig.json
Normal file
@ -0,0 +1,7 @@
|
||||
{
|
||||
"extends": "@tsconfig/node14/tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"rootDir": "src",
|
||||
"outDir": "dist"
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user