freechat/rtc-server/main.js
shockrah d8171f8b03 + Replacing rust microservice with more lenient js built server
The JSON-API can't _really_ use regular http requests because this server then has to do a lot of
multi-threading nonsense.
For the sake of simplicity for myself and others that try to write their own FC
compliant servers: the rtc server(for now) only takes in websocket requests,
and attemptes to discern servers from users connections for event handling
2021-04-01 11:41:51 -07:00

44 lines
928 B
JavaScript

const ws = require('ws')
const peersapi = require('./peers.js')
const auth = require('./auth.js')
const server = new ws.Server({ port: 5648 })
const peers = new peersapi.PeerMap()
server.on('connection', function(ws, req) {
let [jwt, path] = auth.prepare_auth(req)
let conn = auth.verify(jwt)
if(conn == 'server') {
console.log('[WSS] New server connection')
// Peer map initialization
ws.on('open', function() {
peers.add_server(ws)
})
ws.on('close', function() {
console.log('server left')
peers.remove_server(ws)
})
ws.on('message', function(message) {
peers.notify(message)
})
} else if(conn == 'user') {
ws.on('open', function() {
console.log('adding with path', req.url)
peers.add_user(ws, req.url)
})
ws.on('close', function() {
peers.remove_user(ws)
})
console.log('[WSS] New user conncetion')
} else {
console.log('[WSS] No valid auth')
ws.close()
}
})