47 lines
1011 B
TypeScript
47 lines
1011 B
TypeScript
import { createServer as createHttpServer } from 'node:http'
|
|
import { consola } from 'consola'
|
|
import cors from 'cors'
|
|
import express from 'express'
|
|
import * as mediasoup from 'mediasoup'
|
|
import { Server as SocketServer } from 'socket.io'
|
|
import { webrtcSocket } from './sockets'
|
|
|
|
(async () => {
|
|
const app = express()
|
|
|
|
app.use(cors())
|
|
|
|
const server = createHttpServer(app)
|
|
|
|
const worker = await mediasoup.createWorker()
|
|
worker.on('died', () => {
|
|
consola.error('[Mediasoup]', 'Worker died, exiting...')
|
|
|
|
process.exit(1)
|
|
})
|
|
|
|
const router = await worker.createRouter({
|
|
mediaCodecs: [
|
|
{
|
|
kind: 'audio',
|
|
mimeType: 'audio/opus',
|
|
clockRate: 48000,
|
|
channels: 2,
|
|
},
|
|
],
|
|
})
|
|
|
|
const io = new SocketServer(server, {
|
|
path: '/chad/ws',
|
|
cors: {
|
|
origin: process.env.CORS_ORIGIN || '*',
|
|
},
|
|
})
|
|
|
|
webrtcSocket(io, router)
|
|
|
|
server.listen(process.env.PORT || 3000, () => {
|
|
consola.success('[Server]', 'Server started!')
|
|
})
|
|
})()
|