SyedFouzan's picture
{
ffb4c35 verified
Raw History Blame Contribute Delete
1.17 kB
import React, { createContext, useContext, useEffect, useState } from 'react';
import io from 'socket.io-client';
import { useAuth } from './AuthContext';
const SocketContext = createContext();
export const useSocket = () => {
const context = useContext(SocketContext);
if (!context) {
throw new Error('useSocket must be used within a SocketProvider');
}
return context;
};
export const SocketProvider = ({ children }) => {
const [socket, setSocket] = useState(null);
const { user } = useAuth();
useEffect(() => {
if (user) {
const newSocket = io(process.env.REACT_APP_SOCKET_URL || 'http://localhost:8080', {
auth: {
token: localStorage.getItem('token')
}
});
newSocket.on('connect', () => {
console.log('Connected to server');
});
newSocket.on('disconnect', () => {
console.log('Disconnected from server');
});
setSocket(newSocket);
return () => {
newSocket.close();
};
}
}, [user]);
const value = {
socket
};
return (
<SocketContext.Provider value={value}>
{children}
</SocketContext.Provider>
);
};