fix(core): update to transparent universe
This commit is contained in:
@@ -1,9 +1,7 @@
|
||||
import * as plugins from './smartuniverse.plugins';
|
||||
|
||||
import { Handler, Route, Server } from 'smartexpress';
|
||||
import { UniverseChannel } from './smartuniverse.classes.universechannel';
|
||||
import { UniverseMessage } from './smartuniverse.classes.universemessage';
|
||||
import { UniverseCache } from './smartuniverse.classes.universecache';
|
||||
import { UniverseCache, UniverseChannel, UniverseMessage } from './';
|
||||
|
||||
import * as paths from './smartuniverse.paths';
|
||||
|
||||
@@ -57,6 +55,14 @@ export class Universe {
|
||||
this.universeCache = new UniverseCache(this.options.messageExpiryInMilliseconds);
|
||||
}
|
||||
|
||||
/**
|
||||
* adds a channel to the Universe
|
||||
*/
|
||||
public async addChannel(nameArg: string, passphraseArg: string) {
|
||||
const newChannel = new UniverseChannel(this.universeCache, nameArg, passphraseArg);
|
||||
this.universeCache.channelMap.add(newChannel);
|
||||
}
|
||||
|
||||
/**
|
||||
* initiates a server
|
||||
*/
|
||||
@@ -68,46 +74,13 @@ export class Universe {
|
||||
port: portArg
|
||||
});
|
||||
|
||||
// message handling
|
||||
// adds messages
|
||||
const addMessageHandler = new Handler('PUT', async request => {
|
||||
const requestBody: IServerPutMessageRequestBody = request.body;
|
||||
const message = new UniverseMessage(
|
||||
requestBody.message,
|
||||
requestBody.channel,
|
||||
requestBody.passphrase,
|
||||
requestBody.payload
|
||||
);
|
||||
this.universeCache.addMessage(message);
|
||||
console.log(requestBody);
|
||||
return true;
|
||||
});
|
||||
|
||||
// gets messages
|
||||
const readMessageHandler = new Handler('GET', request => {
|
||||
const done = plugins.smartq.defer<UniverseMessage[]>();
|
||||
const requestBody = request.body;
|
||||
const messageObservable = this.universeCache.readMessagesYoungerThan(requestBody.since);
|
||||
messageObservable.toArray().subscribe(universeMessageArrayArg => {
|
||||
done.resolve(universeMessageArrayArg);
|
||||
});
|
||||
return done.promise;
|
||||
});
|
||||
|
||||
// create new Route for messages
|
||||
const messageRoute = new Route(this.smartexpressServer, 'message');
|
||||
messageRoute.addHandler(addMessageHandler);
|
||||
messageRoute.addHandler(readMessageHandler);
|
||||
|
||||
const leaderElectionRoute = new Route(this.smartexpressServer, 'leadelection');
|
||||
// TODO: implement Handlers for leader election
|
||||
|
||||
// add websocket upgrade
|
||||
this.smartsocket = new plugins.smartsocket.Smartsocket({
|
||||
port: 12345 // fix this within smartsocket
|
||||
});
|
||||
|
||||
this.smartsocket.setExternalServer('express', this.smartexpressServer as any); // should work with express as well
|
||||
this.smartsocket.setExternalServer('express', this.smartexpressServer as any);
|
||||
// should work with express as well
|
||||
this.smartsocket.start();
|
||||
|
||||
await this.smartexpressServer.start();
|
||||
|
||||
Reference in New Issue
Block a user