Skip to content

Instantly share code, notes, and snippets.

@manudevcode
Forked from Klerith/SocketContext.js
Created November 20, 2020 18:34
Show Gist options
  • Save manudevcode/3ba8a6204a5d859ef14415ef2844cffe to your computer and use it in GitHub Desktop.
Save manudevcode/3ba8a6204a5d859ef14415ef2844cffe 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