Added ux to vanilla client, rebuild server side

This commit is contained in:
gltron
2020-03-31 20:32:50 +02:00
parent c7466e6e51
commit 60ff817711
46 changed files with 284 additions and 13660 deletions

View File

@@ -3,6 +3,7 @@ const fs = require('fs')
const bodyParser = require('body-parser')
const cors = require('cors')
const config = require('../config.json')
const signal = require('./signal')
const https = require('https')
const WebSocketServer = require('ws').Server
@@ -18,109 +19,17 @@ app.use(cors())
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())
app.use(express.static('./client'))
app.use(express.static('../../client'))
server.listen(port, () => {
console.log(`Launching Lil'Streamy on ${port}`)
})
var users = {}
wss.on('connection', function(connection) {
console.log('User connected')
connection.on('message', (message) => onMessage(connection, message))
connection.on('message', (message) => signal.onMessage(connection, message))
connection.on('close', () => onClose(connection))
connection.on('close', () => signal.onClose(connection))
})
function sendTo(connection, message) {
connection.send(JSON.stringify(message))
}
function onClose(connection) {
if(connection.name) {
delete users[connection.name]
if(connection.otherName) {
console.log('Disconnecting from ', connection.otherName)
var conn = users[connection.otherName]
conn.otherName = null
if(conn != null) {
sendTo(conn, {
type: 'leave'
})
}
}
}
}
function onMessage(connection, message) {
var data
try {
data = JSON.parse(message);
} catch (e) {
console.log('Invalid JSON')
data = {}
}
switch (data.type) {
case 'login' :
console.log('User logged', data.name);
if(users[data.name]) {
sendTo(connection, {
type: 'login',
success: false
})
} else {
users[data.name] = connection
connection.name = data.name
sendTo(connection, {
type: 'login',
success: true
})
}
break
case 'leave' :
console.log('Disconnecting from', data.name)
var conn = users[data.name]
conn.otherName = null
//notify the other user so he can disconnect his peer connection
/*
if(conn != null) {
sendTo(conn, {
type: 'leave'
});
}*/
break;
case 'userlist' :
console.log('Send list to', data.name)
sendTo(connection, {
type: 'userlist',
list: users
});
break
default:
if (data.target){
var targetConnection = users[data.target];
if(targetConnection){
console.log('Forward message from ' + data.name + ' to ' + data.target + ' (' + data.type + ')')
sendTo(targetConnection, data)
}
} else {
sendTo(connection, {
type: 'error',
message: 'Command not found: ' + data.type
});
}
}
}

View File

@@ -1,19 +1,23 @@
const WebSocketServer = require('ws').Server
var wss = new WebSocketServer({port: 9090})
var users = {}
wss.on('connection', function(connection) {
console.log('User connected')
connection.on('message', (message) => onMessage(connection, message))
connection.on('close', () => onClose(connection))
})
var users = new Map()
function sendTo(connection, message) {
connection.send(JSON.stringify(message))
connection.send(JSON.stringify(message))
}
function broadcast(message) {
console.log('Broadcast '+message)
var jsonMessage = JSON.stringify(message)
Object.keys(users).forEach(function(key) {
users[key].send(jsonMessage)
})
}
function getUserlist(){
var usersArray = []
Object.keys(users).forEach(function(key) {
usersArray.push(key)
})
return usersArray
}
function onClose(connection) {
@@ -60,43 +64,67 @@ function onMessage(connection, message) {
type: 'login',
success: true
})
broadcast({
type: 'userlist',
users: getUserlist()
})
}
break
case 'leave' :
console.log('Disconnecting from', data.name)
var conn = users[data.name]
conn.otherName = null
users[data.name] = null
//notify the other user so he can disconnect his peer connection
//notify the other
/*
if(conn != null) {
sendTo(conn, {
type: 'leave'
broadcast({
type: 'leave',
name: data.name
});
}*/
break;
break
case 'userlist' :
console.log('Send list to', data.name)
sendTo(connection, {
type: 'userlist',
list: users
});
users: getUserlist()
})
break
default:
if (data.target){
var targetConnection = users[data.target];
if(targetConnection){
if (data.target) {
if (data.target == data.name) {
sendTo(connection, {
type: 'error',
message: 'No loopback'
})
break
}
var targetConnection = users[data.target]
if (targetConnection) {
console.log('Forward message from ' + data.name + ' to ' + data.target + ' (' + data.type + ')')
sendTo(targetConnection, data)
} else {
sendTo(connection, {
type: 'error',
message: 'Peer not found'
})
}
} else {
sendTo(connection, {
type: 'error',
message: 'Command not found: ' + data.type
});
})
}
}
}
module.exports = {
sendTo,
broadcast,
onClose,
onMessage
}