chad/server/server.ts
Никита Круглицкий 31460598ba
All checks were successful
Deploy / deploy (push) Successful in 24s
server
2025-10-16 22:23:30 +06:00

62 lines
1.4 KiB
TypeScript

import { createServer as createHttpServer } from 'node:http'
import { createExpressMiddleware } from '@trpc/server/adapters/express'
import { consola } from 'consola'
import cookieParser from 'cookie-parser'
import cors from 'cors'
import express from 'express'
import * as mediasoup from 'mediasoup'
import { Server as SocketServer } from 'socket.io'
import { createContext } from './trpc/context'
import { appRouter } from './trpc/routers'
import webrtcSocket from './webrtc/socket'
(async () => {
const app = express()
app.use(cors())
app.use(cookieParser())
app.use(express.json())
app.use(
'/chad/trpc',
createExpressMiddleware({
router: appRouter,
createContext,
}),
)
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,
parameters: { useinbandfec: 1, stereo: 1 },
},
],
})
const io = new SocketServer(server, {
path: '/chad/ws',
cors: {
origin: process.env.CORS_ORIGIN || '*',
},
})
webrtcSocket(io, router)
server.listen(process.env.PORT || 4000, () => {
console.log('✅ Server running')
})
})()