Server bootstrap.

pull/25/head
Pontus Alexander 2017-12-10 18:42:08 +01:00
parent e3ebee4557
commit 44b411880d
2 changed files with 4 additions and 64 deletions

View File

@ -3,6 +3,7 @@
"version": "0.1.0", "version": "0.1.0",
"description": "A generic WebRTC library and peering server.", "description": "A generic WebRTC library and peering server.",
"scripts": { "scripts": {
"start:server": "node peer-exchange/src/server.js",
"test": "jest" "test": "jest"
}, },
"repository": { "repository": {

View File

@ -1,71 +1,10 @@
const WebSocketServer = require('ws').Server; const WebSocketServer = require('ws').Server;
const Session = require('./models/session'); const {Registry} = require('./models/registry.js');
const Client = require('./models/client'); const {createConnectionHandler} = require('./handler.js');
const { createId } = require('./random');
const PORT = process.env.PORT || 9000; const PORT = process.env.PORT || 9000;
const server = new WebSocketServer({port: 9000}); const server = new WebSocketServer({port: 9000});
const sessions = new Map; server.on('connection', createConnectionHandler(new Registry()));
function createClient(conn, id = createId()) {
return new Client(conn, id);
}
function createSession(id = createId()) {
if (sessions.has(id)) {
throw new Error(`Session ${id} already exists`);
}
const session = new Session(id);
console.log('Creating session', session);
sessions.set(id, session);
return session;
}
function getSession(id) {
return sessions.get(id);
}
server.on('connection', conn => {
console.log('Connection established');
const client = createClient(conn);
conn.on('message', msg => {
console.log('Message received', msg);
const data = JSON.parse(msg);
if (data.type === 'create-session') {
const session = createSession();
session.join(client);
client.send({
type: 'session-created',
id: session.id,
});
} else if (data.type === 'join-session') {
const session = getSession(data.id) || createSession(data.id);
session.join(client);
} else {
client.broadcast(data);
}
});
conn.on('close', () => {
console.log('Connection closed');
const session = client.session;
if (session) {
session.leave(client);
if (session.clients.size === 0) {
sessions.delete(session.id);
}
}
console.log(sessions);
});
});
console.log(`Running on port ${PORT}`); console.log(`Running on port ${PORT}`);