leaky-ships/leaky-ships/components/SocketIO.tsx

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