wifi-tally_Oostendam/wifi-tally/hub/hooks/useSocket.js
Eljakim Herrewijnen 50b5fc1824 Initial commit
2021-09-27 21:52:27 +02:00

38 lines
1013 B
JavaScript

import { useEffect } from 'react'
import io from 'socket.io-client'
const EventEmitter = require('events')
const socketEventEmitter = new EventEmitter()
const socket = io()
const onConnection = function() {
socketEventEmitter.emit("connected")
}
const onDisconnection = function() {
socketEventEmitter.emit("disconnected")
}
if (typeof window !== 'undefined') {
// on client only
socket.on("connect", onConnection)
socket.on("connect_error", onDisconnection)
socket.on("connect_timeout", onDisconnection)
socket.on("disconnected", onDisconnection)
socket.on("reconnect", onDisconnection)
socket.on("reconnecting", onDisconnection)
socket.on("reconnect_error", onDisconnection)
socket.on("reconnect_failed", onDisconnection)
}
const useSocket = function (eventName, cb) {
useEffect(() => {
socket.on(eventName, cb)
return function useSocketCleanup() {
socket.off(eventName, cb)
}
}, [eventName, cb])
return socket
}
export {useSocket, socketEventEmitter, socket}