mirror of
https://github.com/hanzoai/insights-js.git
synced 2026-10-30 18:34:19 +00:00
40 lines
1.1 KiB
TypeScript
40 lines
1.1 KiB
TypeScript
import { Server } from 'socket.io'
|
|
import type { NextApiRequest, NextApiResponse } from 'next'
|
|
import type { Server as HttpServer } from 'http'
|
|
import type { Socket as NetSocket } from 'net'
|
|
|
|
// Extend the response object to include the custom `io` property
|
|
interface CustomServer extends HttpServer {
|
|
io?: Server
|
|
}
|
|
|
|
interface CustomNetSocket extends NetSocket {
|
|
server: CustomServer
|
|
}
|
|
|
|
interface CustomNextApiResponse extends NextApiResponse {
|
|
socket: CustomNetSocket
|
|
}
|
|
|
|
export default function handler(req: NextApiRequest, res: CustomNextApiResponse) {
|
|
if (!res.socket.server.io) {
|
|
const io = new Server(res.socket.server)
|
|
res.socket.server.io = io
|
|
|
|
io.on('connection', (socket) => {
|
|
// eslint-disable-next-line no-console
|
|
console.log('User connected', socket.id)
|
|
|
|
socket.on('send chat message', (msg) => {
|
|
socket.emit('message', msg)
|
|
})
|
|
|
|
socket.on('disconnect', () => {
|
|
// eslint-disable-next-line no-console
|
|
console.log('User disconnected', socket.id)
|
|
})
|
|
})
|
|
}
|
|
res.end()
|
|
}
|