46 lines
840 B
TypeScript
46 lines
840 B
TypeScript
|
|
import { io, Socket } from 'socket.io-client'
|
||
|
|
|
||
|
|
const SOCKET_URL = process.env.NEXT_PUBLIC_SOCKET_URL || 'http://localhost:3001'
|
||
|
|
|
||
|
|
let socket: Socket | null = null
|
||
|
|
|
||
|
|
export const connectSocket = (token: string) => {
|
||
|
|
if (!socket) {
|
||
|
|
socket = io(SOCKET_URL, {
|
||
|
|
auth: {
|
||
|
|
token,
|
||
|
|
},
|
||
|
|
})
|
||
|
|
|
||
|
|
socket.on('connect', () => {
|
||
|
|
console.log('Socket connected')
|
||
|
|
})
|
||
|
|
|
||
|
|
socket.on('disconnect', () => {
|
||
|
|
console.log('Socket disconnected')
|
||
|
|
})
|
||
|
|
|
||
|
|
socket.on('connect_error', (error) => {
|
||
|
|
console.error('Socket connection error:', error)
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
return socket
|
||
|
|
}
|
||
|
|
|
||
|
|
export const disconnectSocket = () => {
|
||
|
|
if (socket) {
|
||
|
|
socket.disconnect()
|
||
|
|
socket = null
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
export const getSocket = () => socket
|
||
|
|
|
||
|
|
export default {
|
||
|
|
connect: connectSocket,
|
||
|
|
disconnect: disconnectSocket,
|
||
|
|
get: getSocket,
|
||
|
|
}
|
||
|
|
|