base notification socket
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
import { getToken } from '@/config/func'
|
||||
import { useSocket } from '@/pages/pager/hooks/useSocket'
|
||||
import { type FC, useEffect, useCallback } from 'react'
|
||||
|
||||
const Notification: FC = () => {
|
||||
|
||||
// توکن بدون Bearer prefix (مثل کد HTML)
|
||||
const token = getToken()
|
||||
// اضافه کردن /notifications namespace به URL
|
||||
const socketUrl = `${import.meta.env.VITE_SOCKET_URL}/notifications`
|
||||
const { connect, socket, isConnected, error } = useSocket(socketUrl, token!)
|
||||
|
||||
// لاگ کردن وضعیت اتصال
|
||||
useEffect(() => {
|
||||
console.log('🔄 Notification: وضعیت اتصال:', isConnected ? 'متصل ✅' : 'قطع ❌')
|
||||
}, [isConnected])
|
||||
|
||||
// لاگ کردن خطاها
|
||||
useEffect(() => {
|
||||
if (error) {
|
||||
console.error('❌ Notification: خطا در اتصال:', error)
|
||||
}
|
||||
}, [error])
|
||||
|
||||
|
||||
useEffect(() => {
|
||||
console.log('🔌 Notification: تلاش برای اتصال...', socketUrl)
|
||||
connect()
|
||||
}, [connect])
|
||||
|
||||
const handleGetNotification = useCallback((data: unknown) => {
|
||||
console.log('✅ Notification: دریافت نوتیفیکیشنها:', data)
|
||||
// alert('دریافت نوتیفیکیشنها: ' + JSON.stringify(data))
|
||||
}, [])
|
||||
|
||||
useEffect(() => {
|
||||
if (isConnected) {
|
||||
console.log('✅ Notification: متصل شد! ارسال درخواست...')
|
||||
socket?.emit('get:notifications', { limit: 50 })
|
||||
}
|
||||
}, [isConnected, socket])
|
||||
|
||||
useEffect(() => {
|
||||
if (socket) {
|
||||
console.log('📡 Notification: تنظیم listener برای notifications:list')
|
||||
|
||||
const errorHandler = (error: unknown) => {
|
||||
console.error('❌ Notification Error:', error)
|
||||
}
|
||||
|
||||
const exceptionHandler = (error: unknown) => {
|
||||
console.error('❌ Notification Exception:', error)
|
||||
}
|
||||
|
||||
socket.on('notifications:list', handleGetNotification)
|
||||
socket.on('error', errorHandler)
|
||||
socket.on('exception', exceptionHandler)
|
||||
|
||||
// cleanup function
|
||||
return () => {
|
||||
socket.off('notifications:list', handleGetNotification)
|
||||
socket.off('error', errorHandler)
|
||||
socket.off('exception', exceptionHandler)
|
||||
}
|
||||
}
|
||||
}, [socket, handleGetNotification])
|
||||
|
||||
|
||||
|
||||
return (
|
||||
<div></div>
|
||||
)
|
||||
}
|
||||
|
||||
export default Notification
|
||||
Reference in New Issue
Block a user