Skip to content

Instantly share code, notes, and snippets.

@Klerith
Last active August 24, 2023 08:00
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 7 You must be signed in to fork a gist
  • Save Klerith/670c9ab9af27a4df8ac7626d6844ee95 to your computer and use it in GitHub Desktop.
Save Klerith/670c9ab9af27a4df8ac7626d6844ee95 to your computer and use it in GitHub Desktop.
Todo lo necesario para conectarnos a nuestro socket server - SocketContext, SocketProvider, useSocket
import React from 'react';
import { createContext } from 'react';
import { useSocket } from '../hooks/useSocket'
export const SocketContext = createContext();
export const SocketProvider = ({ children }) => {
const { socket, online } = useSocket('http://localhost:8080');
return (
<SocketContext.Provider value={{ socket, online }}>
{ children }
</SocketContext.Provider>
)
}
import { useEffect, useMemo, useState } from 'react';
import io from 'socket.io-client';
export const useSocket = ( serverPath ) => {
const socket = useMemo(() => io.connect( serverPath, {transports: ['websocket']} ), [ serverPath ] );
const [ online, setOnline ] = useState(false);
useEffect(() => {
setOnline( socket.connected );
}, [socket])
useEffect(() => {
socket.on('connect', () => setOnline( true ));
}, [ socket ])
useEffect(() => {
socket.on('disconnect', () => setOnline( false ));
}, [ socket ])
return {
socket,
online
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment