diff options
| author | yipstanley <stanley_yip@brown.edu> | 2019-02-11 00:28:48 -0500 |
|---|---|---|
| committer | yipstanley <stanley_yip@brown.edu> | 2019-02-11 00:28:48 -0500 |
| commit | ab6fe5dbe625bca862558557224d6b5f8d2e5f1d (patch) | |
| tree | b85114a770ed44a6ac2120dbb8dcfc0bdc48e5ff /src/server | |
| parent | 5d081dc8ea638f9729058bfe7a310cebbd9f5581 (diff) | |
asdfkjlasdfljkagit add -A!
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/Message.ts | 35 | ||||
| -rw-r--r-- | src/server/index.ts | 51 | ||||
| -rw-r--r-- | src/server/server.ts | 31 |
3 files changed, 82 insertions, 35 deletions
diff --git a/src/server/Message.ts b/src/server/Message.ts index d5b9b4612..15329249d 100644 --- a/src/server/Message.ts +++ b/src/server/Message.ts @@ -1,8 +1,10 @@ import { Utils } from "../Utils"; +import { FIELD_ID, Field } from "../fields/Field"; -export class Message { +export class Message<T> { private name: string; private guid: string; + readonly ArgsCtor: new (...args: any) => T; get Name(): string { return this.name; @@ -12,9 +14,10 @@ export class Message { return this.guid } - constructor(name: string) { + constructor(name: string, ctor: new (...args: any) => T) { this.name = name; this.guid = Utils.GenerateDeterministicGuid(name) + this.ArgsCtor = ctor; } GetValue() { @@ -22,6 +25,32 @@ export class Message { } } +class TestMessageArgs { + hello: string = ""; +} + +export class SetFieldArgs { + field: string; + value: any; + + constructor(f: string, v: any) { + this.field = f + this.value = v + } +} + +export class GetFieldArgs { + field: string; + + constructor(f: string) { + this.field = f + } +} + export namespace MessageStore { - export const Handshake = new Message("Handshake"); + export const Foo = new Message("Foo", String); + export const Bar = new Message("Bar", String); + export const AddDocument = new Message("Add Document", TestMessageArgs); + export const SetField = new Message("Set Field", SetFieldArgs) + export const GetField = new Message("Get Field", GetFieldArgs) }
\ No newline at end of file diff --git a/src/server/index.ts b/src/server/index.ts index 640ad8180..b9c587892 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -4,10 +4,18 @@ import * as webpack from 'webpack' import * as wdm from 'webpack-dev-middleware'; import * as whm from 'webpack-hot-middleware'; import * as path from 'path' +import { MessageStore, Message, SetFieldArgs, GetFieldArgs } from "./Message"; +import { Client } from './Client'; +import { Socket } from 'socket.io'; +import { Utils } from '../Utils'; +import { ObservableMap } from 'mobx'; +import { FIELD_ID, Field } from '../fields/Field'; const config = require('../../webpack.config') const compiler = webpack(config) const port = 1050; // default port to listen +let FieldStore: ObservableMap<FIELD_ID, Field> = new ObservableMap(); + // define a route handler for the default home page app.get("/", (req, res) => { res.sendFile(path.join(__dirname, '../../deploy/index.html')); @@ -26,4 +34,45 @@ app.use(whm(compiler)) // start the Express server app.listen(port, () => { console.log(`server started at http://localhost:${port}`); -});
\ No newline at end of file +}) + +const server = require("socket.io")(); +interface Map { + [key: string]: Client; +} +let clients: Map = {} + +server.on("connection", function (socket: Socket) { + console.log("a user has connected") + + Utils.Emit(socket, MessageStore.Foo, "handshooken") + + Utils.AddServerHandler(socket, MessageStore.Bar, barReceived) + // Utils.AddServerHandler(socket, MessageStore.AddDocument, addDocument) + Utils.AddServerHandler(socket, MessageStore.SetField, setField) + // socket.on(MessageStore.SetField.Message, setField) + Utils.AddServerHandlerCallback(socket, MessageStore.GetField, getField) +}) + +function barReceived(guid: String) { + clients[guid.toString()] = new Client(guid.toString()); +} + +function addDocument(document: Document) { + +} + +function setField(newValue: SetFieldArgs) { + if (FieldStore.get(newValue.field)) { + FieldStore.get(newValue.field)!.TrySetValue(newValue.value); + } +} + +function getField([fieldRequest, callback]: [GetFieldArgs, (field: Field) => void]) { + let fieldid: string = fieldRequest.field + callback(FieldStore.get(fieldid) as Field) + console.log(fieldid) +} + +server.listen(1234); +console.log("listening on port 1234");
\ No newline at end of file diff --git a/src/server/server.ts b/src/server/server.ts deleted file mode 100644 index db58ed662..000000000 --- a/src/server/server.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { MessageStore } from "./Message"; - -// const express = require("express") -// const path = require("path") - -// const app = express(); -// app.set("port", process.env.PORT || 3000); - -// var http = require('http').Server(app); - -// app.get('/', function (req: any, res: any) { -// res.sendFile(path.resolve("./deploy/index.html")) -// }) - -// const server = http.listen(3000, function () { -// console.log("Listening on *:3000") -// }) - -const server = require("socket.io")(); -var clients = []; - -server.on("connection", function (socket: any) { - console.log("a user has connected") - - socket.emit(MessageStore.Handshake.Message, "handshake received") - - clients.push(socket) -}) - -server.listen(8080); -console.log("listening on port 8080")
\ No newline at end of file |
