
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
44 lines
928 B
JavaScript
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()
|
|
}
|
|
|
|
})
|