File size: 1,076 Bytes
a7476ec
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import http from 'http'
import { WebSocketServer } from 'ws'
import { RoomManager } from './services/RoomManager.js'
import { MessageHandler } from './handlers/MessageHandler.js'

const roomManager = new RoomManager()
type wsData = Buffer | ArrayBuffer | Buffer[] | string

const PORT = process.env.PORT || 7860

const server = http.createServer((req, res) => {
    // Handle simple GET /
    if (req.method === 'GET' && req.url === '/') {
        res.writeHead(200, { 'Content-Type': 'text/plain' })
        res.end('Hello from WebSocket server without Express!')
    } else {
        res.writeHead(404, { 'Content-Type': 'text/plain' })
        res.end('Not Found')
    }
})

const wss = new WebSocketServer({ server })

wss.on('connection', (ws) => {
    console.log('connected to user')

    ws.on('message', (msg: wsData) => {
        MessageHandler.handle(msg.toString(), ws, roomManager)
    })

    ws.on('close', () => {
        console.log('connection closed!')
    })
})

server.listen(PORT, () => {
    console.log(`Server running on http://localhost:${PORT}`)
})