aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Utils.ts17
-rw-r--r--src/client/DocServer.ts58
-rw-r--r--src/server/websocket.ts2
3 files changed, 42 insertions, 35 deletions
diff --git a/src/Utils.ts b/src/Utils.ts
index a48fb2bc2..291d7c799 100644
--- a/src/Utils.ts
+++ b/src/Utils.ts
@@ -1,7 +1,7 @@
import * as Color from 'color';
import { ColorResult } from 'react-color';
import * as rp from 'request-promise';
-import { Socket } from 'socket.io-client';
+import { Socket } from 'socket.io';
import * as uuid from 'uuid';
import { DocumentType } from './client/documents/DocumentTypes';
import { Colors } from './client/views/global/globalEnums';
@@ -382,7 +382,7 @@ export namespace Utils {
export const loggingEnabled: Boolean = false;
export const logFilter: number | undefined = undefined;
- function log(prefix: string, messageName: string, message: any, receiving: boolean) {
+ export function log(prefix: string, messageName: string, message: any, receiving: boolean) {
if (!loggingEnabled) {
return;
}
@@ -395,7 +395,7 @@ export namespace Utils {
console.log(`${prefix}: ${idString}, ${receiving ? 'receiving' : 'sending'} ${messageName} with data ${JSON.stringify(message)} `);
}
- function loggingCallback(prefix: string, func: (args: any) => any, messageName: string) {
+ export function loggingCallback(prefix: string, func: (args: any) => any, messageName: string) {
return (args: any) => {
log(prefix, messageName, args, true);
func(args);
@@ -407,17 +407,6 @@ export namespace Utils {
socket.emit(message.Message, args);
}
- export function EmitCallback<T>(socket: Socket, message: Message<T>, args: T): Promise<any>;
- export function EmitCallback<T>(socket: Socket, message: Message<T>, args: T, fn: (args: any) => any): void;
- export function EmitCallback<T>(socket: Socket, message: Message<T>, args: T, fn?: (args: any) => any): void | Promise<any> {
- log('Emit', message.Name, args, false);
- if (fn) {
- socket.emit(message.Message, args, loggingCallback('Receiving', fn, message.Name));
- } else {
- return new Promise<any>(res => socket.emit(message.Message, args, loggingCallback('Receiving', res, message.Name)));
- }
- }
-
export function AddServerHandler<T>(socket: Socket, message: Message<T>, handler: (args: T) => any) {
socket.on(message.Message, loggingCallback('Incoming', handler, message.Name));
}
diff --git a/src/client/DocServer.ts b/src/client/DocServer.ts
index 2658a1df5..80fccf7bc 100644
--- a/src/client/DocServer.ts
+++ b/src/client/DocServer.ts
@@ -10,7 +10,7 @@ import { DocCast, StrCast } from '../fields/Types';
//import MobileInkOverlay from '../mobile/MobileInkOverlay';
import { io, Socket } from 'socket.io-client';
import { emptyFunction, Utils } from '../Utils';
-import { GestureContent, MessageStore, MobileDocumentUploadContent, MobileInkOverlayContent, UpdateMobileInkOverlayPositionContent, YoutubeQueryTypes } from './../server/Message';
+import { GestureContent, Message, MessageStore, MobileDocumentUploadContent, MobileInkOverlayContent, UpdateMobileInkOverlayPositionContent, YoutubeQueryTypes } from './../server/Message';
import { DocumentType } from './documents/DocumentTypes';
import { LinkManager } from './util/LinkManager';
import { SerializationHelper } from './util/SerializationHelper';
@@ -32,6 +32,24 @@ import { SerializationHelper } from './util/SerializationHelper';
export namespace DocServer {
let _cache: { [id: string]: RefField | Promise<Opt<RefField>> } = {};
+ export function AddServerHandler<T>(socket: Socket, message: Message<T>, handler: (args: T) => any) {
+ socket.on(message.Message, Utils.loggingCallback('Incoming', handler, message.Name));
+ }
+ export function Emit<T>(socket: Socket, message: Message<T>, args: T) {
+ //log('Emit', message.Name, args, false);
+ socket.emit(message.Message, args);
+ }
+ export function EmitCallback<T>(socket: Socket, message: Message<T>, args: T): Promise<any>;
+ export function EmitCallback<T>(socket: Socket, message: Message<T>, args: T, fn: (args: any) => any): void;
+ export function EmitCallback<T>(socket: Socket, message: Message<T>, args: T, fn?: (args: any) => any): void | Promise<any> {
+ //log('Emit', message.Name, args, false);
+ if (fn) {
+ socket.emit(message.Message, args, Utils.loggingCallback('Receiving', fn, message.Name));
+ } else {
+ return new Promise<any>(res => socket.emit(message.Message, args, Utils.loggingCallback('Receiving', res, message.Name)));
+ }
+ }
+
export function FindDocByTitle(title: string) {
const foundDocId =
title &&
@@ -132,20 +150,20 @@ export namespace DocServer {
export namespace Mobile {
export function dispatchGesturePoints(content: GestureContent) {
- Utils.Emit(_socket, MessageStore.GesturePoints, content);
+ DocServer.Emit(_socket, MessageStore.GesturePoints, content);
}
export function dispatchOverlayTrigger(content: MobileInkOverlayContent) {
// _socket.emit("dispatchBoxTrigger");
- Utils.Emit(_socket, MessageStore.MobileInkOverlayTrigger, content);
+ DocServer.Emit(_socket, MessageStore.MobileInkOverlayTrigger, content);
}
export function dispatchOverlayPositionUpdate(content: UpdateMobileInkOverlayPositionContent) {
- Utils.Emit(_socket, MessageStore.UpdateMobileInkOverlayPosition, content);
+ DocServer.Emit(_socket, MessageStore.UpdateMobileInkOverlayPosition, content);
}
export function dispatchMobileDocumentUpload(content: MobileDocumentUploadContent) {
- Utils.Emit(_socket, MessageStore.MobileDocumentUpload, content);
+ DocServer.Emit(_socket, MessageStore.MobileDocumentUpload, content);
}
}
@@ -184,11 +202,11 @@ export namespace DocServer {
* Whenever the server sends us its handshake message on our
* websocket, we use the above function to return the handshake.
*/
- Utils.AddServerHandler(_socket, MessageStore.Foo, onConnection);
- Utils.AddServerHandler(_socket, MessageStore.UpdateField, respondToUpdate);
- Utils.AddServerHandler(_socket, MessageStore.DeleteField, respondToDelete);
- Utils.AddServerHandler(_socket, MessageStore.DeleteFields, respondToDelete);
- Utils.AddServerHandler(_socket, MessageStore.ConnectionTerminated, alertUser);
+ DocServer.AddServerHandler(_socket, MessageStore.Foo, onConnection);
+ DocServer.AddServerHandler(_socket, MessageStore.UpdateField, respondToUpdate);
+ DocServer.AddServerHandler(_socket, MessageStore.DeleteField, respondToDelete);
+ DocServer.AddServerHandler(_socket, MessageStore.DeleteFields, respondToDelete);
+ DocServer.AddServerHandler(_socket, MessageStore.ConnectionTerminated, alertUser);
// // mobile ink overlay socket events to communicate between mobile view and desktop view
// _socket.addEventListener('receiveGesturePoints', (content: GestureContent) => {
@@ -252,7 +270,7 @@ export namespace DocServer {
* all documents in the database.
*/
export function deleteDatabase() {
- Utils.Emit(_socket, MessageStore.DeleteAll, {});
+ DocServer.Emit(_socket, MessageStore.DeleteAll, {});
}
}
@@ -275,7 +293,7 @@ export namespace DocServer {
// synchronously, we emit a single callback to the server requesting the serialized (i.e. represented by a string)
// field for the given ids. This returns a promise, which, when resolved, indicates the the JSON serialized version of
// the field has been returned from the server
- const getSerializedField = Utils.EmitCallback(_socket, MessageStore.GetRefField, id);
+ const getSerializedField = DocServer.EmitCallback(_socket, MessageStore.GetRefField, id);
// when the serialized RefField has been received, go head and begin deserializing it into an object.
// Here, once deserialized, we also invoke .proto to 'load' the document's prototype, which ensures that all
@@ -339,15 +357,15 @@ export namespace DocServer {
}
export async function getYoutubeChannels() {
- return await Utils.EmitCallback(_socket, MessageStore.YoutubeApiQuery, { type: YoutubeQueryTypes.Channels });
+ return await DocServer.EmitCallback(_socket, MessageStore.YoutubeApiQuery, { type: YoutubeQueryTypes.Channels });
}
export function getYoutubeVideos(videoTitle: string, callBack: (videos: any[]) => void) {
- Utils.EmitCallback(_socket, MessageStore.YoutubeApiQuery, { type: YoutubeQueryTypes.SearchVideo, userInput: videoTitle }, callBack);
+ DocServer.EmitCallback(_socket, MessageStore.YoutubeApiQuery, { type: YoutubeQueryTypes.SearchVideo, userInput: videoTitle }, callBack);
}
export function getYoutubeVideoDetails(videoIds: string, callBack: (videoDetails: any[]) => void) {
- Utils.EmitCallback(_socket, MessageStore.YoutubeApiQuery, { type: YoutubeQueryTypes.VideoDetails, videoIds: videoIds }, callBack);
+ DocServer.EmitCallback(_socket, MessageStore.YoutubeApiQuery, { type: YoutubeQueryTypes.VideoDetails, videoIds: videoIds }, callBack);
}
/**
@@ -397,7 +415,7 @@ export namespace DocServer {
// the fields have been returned from the server
console.log('Requesting ' + requestedIds.length);
setTimeout(() => runInAction(() => (FieldLoader.ServerLoadStatus.requested = requestedIds.length)));
- const serializedFields = await Utils.EmitCallback(_socket, MessageStore.GetRefFields, requestedIds);
+ const serializedFields = await DocServer.EmitCallback(_socket, MessageStore.GetRefFields, requestedIds);
// 3) when the serialized RefFields have been received, go head and begin deserializing them into objects.
// Here, once deserialized, we also invoke .proto to 'load' the documents' prototypes, which ensures that all
@@ -502,7 +520,7 @@ export namespace DocServer {
function _CreateFieldImpl(field: RefField) {
_cache[field[Id]] = field;
const initialState = SerializationHelper.Serialize(field);
- Doc.CurrentUserEmail !== 'guest' && Utils.Emit(_socket, MessageStore.CreateField, initialState);
+ Doc.CurrentUserEmail !== 'guest' && DocServer.Emit(_socket, MessageStore.CreateField, initialState);
}
let _CreateField: (field: RefField) => void = errorFunc;
@@ -522,7 +540,7 @@ export namespace DocServer {
}
function _UpdateFieldImpl(id: string, diff: any) {
- !DocServer.Control.isReadOnly() && Doc.CurrentUserEmail !== 'guest' && Utils.Emit(_socket, MessageStore.UpdateField, { id, diff });
+ !DocServer.Control.isReadOnly() && Doc.CurrentUserEmail !== 'guest' && DocServer.Emit(_socket, MessageStore.UpdateField, { id, diff });
}
let _UpdateField: (id: string, diff: any) => void = errorFunc;
@@ -559,11 +577,11 @@ export namespace DocServer {
}
export function DeleteDocument(id: string) {
- Doc.CurrentUserEmail !== 'guest' && Utils.Emit(_socket, MessageStore.DeleteField, id);
+ Doc.CurrentUserEmail !== 'guest' && DocServer.Emit(_socket, MessageStore.DeleteField, id);
}
export function DeleteDocuments(ids: string[]) {
- Doc.CurrentUserEmail !== 'guest' && Utils.Emit(_socket, MessageStore.DeleteFields, ids);
+ Doc.CurrentUserEmail !== 'guest' && DocServer.Emit(_socket, MessageStore.DeleteFields, ids);
}
function _respondToDeleteImpl(ids: string | string[]) {
diff --git a/src/server/websocket.ts b/src/server/websocket.ts
index a26b81bdf..8b60caad2 100644
--- a/src/server/websocket.ts
+++ b/src/server/websocket.ts
@@ -1,7 +1,7 @@
import { blue } from 'colors';
import * as express from 'express';
import { createServer } from 'https';
-import { Server, Socket } from '../../node_modules/socket.io/dist/index';
+import { Server, Socket } from 'socket.io';
import { networkInterfaces } from 'os';
import { Utils } from '../Utils';
import { logPort } from './ActionUtilities';