freechat/rtc-server/main.js
shockrah 5df5329b6c * Fixed authentication parameter parsing for both users and servers
* Jwt is now given over the query string as many websocket libraries make
it hard to pass header parameters
Parsing these values should also work fine but we'll see in time
2021-04-09 18:59:10 -07:00

39 lines
881 B
JavaScript

const ws = require('ws')
const auth = require('./auth.js')
const server = new ws.Server({
port: 5648,
clientTracking: true
})
server.on('connection', function(socket, req) {
const [jwt, path] = auth.prepare_auth(req)
const conn = auth.verify(jwt)
if(conn == 'server') {
console.log('[WSS] New server connection')
socket.on('close', function() {
console.log('[WSS] Server connection closed')
})
socket.on('message', function(message) {
// do some parsing, then emit to everyone
server.clients.forEach(client => {
if (client !== socket && client.readyState === ws.OPEN) {
client.send(message)
}
})
})
} else if(conn == 'user') {
console.log('[WSS] New user connection')
socket.on('close', function() {
console.log('[WSS] User connection closed')
})
} else {
console.log('[WSS] No valid auth', conn)
socket.close()
}
})