Enable or disable connections dynamically:
"use client"
import { useState } from "react"
import { useRealtime } from "@upstash/realtime/client"
import type { RealtimeEvents } from "@/lib/realtime"
export default function Page() {
const [enabled, setEnabled] = useState(true)
const { status } = useRealtime<RealtimeEvents>({
enabled,
events: {
notification: {
alert: (data) => console.log(data),
},
},
})
return (
<div>
<button onClick={() => setEnabled((prev) => !prev)}>
{enabled ? "Disconnect" : "Connect"}
</button>
<p>Status: {status}</p>
</div>
)
}
Connection States
The status
value indicates the current connection state:
Initial connection is being established
Active connection, receiving events
Reconnecting after timeout or network interruption
Connection closed (either by setting enabled: false
or error)
Best Practices
Establish a realtime connection only when needed:
"use client"
import { useRealtime } from "@upstash/realtime/client"
export default function Page({ userId }: { userId?: string }) {
useRealtime<RealtimeEvents>({
// 👇 only connect if userId exists
enabled: Boolean(userId),
channel: `user-${userId}`,
events: {
notification: {
alert: (data) => console.log(data),
},
},
})
return <div>Notifications {userId ? "enabled" : "disabled"}</div>
}