From 65d7f3f297b6d807202f4b13c41e54d7e75986d2 Mon Sep 17 00:00:00 2001 From: dragongoose <19649813+dragongoose@users.noreply.github.com> Date: Tue, 14 Mar 2023 17:06:36 -0400 Subject: [PATCH] Change routes folder and get ready to implement websockets --- server/index.ts | 11 ++++++++--- server/routes.ts | 4 ++-- server/routes/{profile => }/profileRoute.ts | 2 +- server/routes/{proxy => }/proxyRoute.ts | 17 +++++++++++++++-- 4 files changed, 26 insertions(+), 8 deletions(-) rename server/routes/{profile => }/profileRoute.ts (85%) rename server/routes/{proxy => }/proxyRoute.ts (84%) diff --git a/server/index.ts b/server/index.ts index 7446c19..ea0deb2 100644 --- a/server/index.ts +++ b/server/index.ts @@ -2,7 +2,8 @@ import express, { Express, NextFunction, Request, Response } from 'express'; import dotenv from 'dotenv' import history from 'connect-history-api-fallback' import routes from './routes' -import { logger, errorHandler, uuid } from './util/logger' +import { errorHandler, uuid } from './util/logger' +import { wsServer } from './routes/proxyRoute'; dotenv.config() @@ -25,7 +26,11 @@ app.use((req, res) => { // handle errors app.use(errorHandler) - -app.listen(port, () => { +const server = app.listen(port, () => { console.log('Server up') }) +server.on('upgrade', (request, socket, head) => { + wsServer.handleUpgrade(request, socket, head, socket => { + wsServer.emit('connection', socket, request); + }); +}); diff --git a/server/routes.ts b/server/routes.ts index c013e90..38c8b46 100644 --- a/server/routes.ts +++ b/server/routes.ts @@ -1,6 +1,6 @@ import { Router } from 'express'; -import profileRoute from './routes/profile/profileRoute' -import proxyRoute from './routes/proxy/proxyRoute' +import profileRoute from './routes/profileRoute' +import proxyRoute from './routes/proxyRoute' const routes = Router(); diff --git a/server/routes/profile/profileRoute.ts b/server/routes/profileRoute.ts similarity index 85% rename from server/routes/profile/profileRoute.ts rename to server/routes/profileRoute.ts index 296f6f2..999a107 100644 --- a/server/routes/profile/profileRoute.ts +++ b/server/routes/profileRoute.ts @@ -1,5 +1,5 @@ import { Router } from 'express' -import { TwitchScraper } from '../../util/scraping/extractors' +import { TwitchScraper } from '../util/scraping/extractors' const profileRouter = Router() const scraper = new TwitchScraper() diff --git a/server/routes/proxy/proxyRoute.ts b/server/routes/proxyRoute.ts similarity index 84% rename from server/routes/proxy/proxyRoute.ts rename to server/routes/proxyRoute.ts index 054a6ab..fbed9b2 100644 --- a/server/routes/proxy/proxyRoute.ts +++ b/server/routes/proxyRoute.ts @@ -1,8 +1,10 @@ import { Streamlink } from '@dragongoose/streamlink'; +import { Socket } from 'dgram'; import { Router, Response, Request, NextFunction } from 'express' +import ws from 'ws'; const proxyRouter = Router(); - + proxyRouter.get('/img', async (req: Request, res: Response, next: NextFunction) => { const imageUrl = req.query.imageUrl?.toString() if(!imageUrl) return; @@ -46,7 +48,7 @@ proxyRouter.get('/stream/:username/hls.m3u8', (req: Request, res: Response, next for (let url of matches) { const base64data = Buffer.from(url).toString('base64url') - //m3u8Data = m3u8Data.replace(url, `${process.env.URL}/proxy/hls/${base64data}`) + m3u8Data = m3u8Data.replace(url, `${process.env.URL}/proxy/hls/${base64data}`) } res.setHeader('Content-type','application/vnd.apple.mpegurl') @@ -74,4 +76,15 @@ proxyRouter.get('/hls/:encodedUrl' , (req: Request, res: Response, next: NextFun .catch((err) => next(err)) }) + + +// IRC PROXY +export const wsServer = new ws.Server({ noServer: true }); +wsServer.on('connection', (socket: Socket) => { + socket.send('Welcome! Send a comma seperated list to get the IRC') + socket.on('message', message => console.log(message.toString())); +}); + + + export default proxyRouter \ No newline at end of file