aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authoryipstanley <stanley_yip@brown.edu>2019-02-11 00:28:48 -0500
committeryipstanley <stanley_yip@brown.edu>2019-02-11 00:28:48 -0500
commitab6fe5dbe625bca862558557224d6b5f8d2e5f1d (patch)
treeb85114a770ed44a6ac2120dbb8dcfc0bdc48e5ff /src/server
parent5d081dc8ea638f9729058bfe7a310cebbd9f5581 (diff)
asdfkjlasdfljkagit add -A!
Diffstat (limited to 'src/server')
-rw-r--r--src/server/Message.ts35
-rw-r--r--src/server/index.ts51
-rw-r--r--src/server/server.ts31
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