44 lines
974 B
TypeScript
44 lines
974 B
TypeScript
import { cSocket } from "../interfaces/NextApiSocket"
|
|
import useGameState from "@lib/hooks/useGameState"
|
|
import { useEffect } from "react"
|
|
import { io } from "socket.io-client"
|
|
|
|
let socket: cSocket
|
|
|
|
function SocketIO() {
|
|
const { session, status } = useGameState()
|
|
|
|
useEffect(() => {
|
|
if (status === "loading" || socket) return
|
|
socket = io({
|
|
path: "/api/ws2",
|
|
})
|
|
|
|
socket.on("connect", () => {
|
|
console.log("connected")
|
|
})
|
|
|
|
socket.on("authenticated", () => {
|
|
console.log("Yay!")
|
|
})
|
|
|
|
socket.on("unauthenticated", () => {
|
|
console.log("No... pls work")
|
|
})
|
|
|
|
return () => {
|
|
socket.off("connect")
|
|
socket.off("authenticated")
|
|
socket.off("unauthenticated")
|
|
}
|
|
}, [status])
|
|
|
|
useEffect(() => {
|
|
console.log(4, socket)
|
|
socket?.emit("authenticate", { token: `hello from ${session?.user.email}` })
|
|
}, [session?.user.email, status])
|
|
|
|
return <div>SocketIO</div>
|
|
}
|
|
|
|
export default SocketIO
|