reconnect clients
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
import { useEffect } from 'react';
|
import { useEffect, useState } from 'react';
|
||||||
import { socket } from '@/socket';
|
import { socket } from '@/socket';
|
||||||
import type { GameUpdate, Tilt } from '@/types';
|
import type { GameUpdate, Tilt } from '@/types';
|
||||||
|
|
||||||
@@ -9,11 +9,15 @@ interface UseSocketProps {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export default function useSocket({ gameID, setGameData, setNoGame }: UseSocketProps) {
|
export default function useSocket({ gameID, setGameData, setNoGame }: UseSocketProps) {
|
||||||
|
const [connect, setConnect] = useState(1);
|
||||||
|
const [disconnected, setDisconnected] = useState(true);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (gameID) {
|
if (gameID) {
|
||||||
socket.emit('join', gameID);
|
socket.emit('join', gameID);
|
||||||
|
|
||||||
socket.on('init', (data: GameUpdate) => {
|
socket.on('init', (data: GameUpdate) => {
|
||||||
|
setDisconnected(false);
|
||||||
setGameData(data);
|
setGameData(data);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -31,14 +35,20 @@ export default function useSocket({ gameID, setGameData, setNoGame }: UseSocketP
|
|||||||
socket.on('flip-error', (error) => {
|
socket.on('flip-error', (error) => {
|
||||||
console.error('Error:', error);
|
console.error('Error:', error);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
socket.on('disconnect', () => {
|
||||||
|
setDisconnected(true);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
socket.removeAllListeners();
|
socket.removeAllListeners();
|
||||||
};
|
};
|
||||||
}, [gameID]);
|
}, [gameID, connect]);
|
||||||
|
|
||||||
const emitFlip = (cardIndex: number) => {
|
const emitFlip = (cardIndex: number) => {
|
||||||
|
if (disconnected) setConnect(connect + 1);
|
||||||
|
|
||||||
socket.emit('flip-card', {
|
socket.emit('flip-card', {
|
||||||
gameID,
|
gameID,
|
||||||
cardIndex,
|
cardIndex,
|
||||||
@@ -46,6 +56,8 @@ export default function useSocket({ gameID, setGameData, setNoGame }: UseSocketP
|
|||||||
};
|
};
|
||||||
|
|
||||||
const emitSettings = (gameData: GameUpdate) => {
|
const emitSettings = (gameData: GameUpdate) => {
|
||||||
|
if (disconnected) setConnect(connect + 1);
|
||||||
|
|
||||||
socket.emit('settings', {
|
socket.emit('settings', {
|
||||||
gameID,
|
gameID,
|
||||||
gameData,
|
gameData,
|
||||||
@@ -53,6 +65,8 @@ export default function useSocket({ gameID, setGameData, setNoGame }: UseSocketP
|
|||||||
};
|
};
|
||||||
|
|
||||||
const emitRedraw = (cardIndex: number) => {
|
const emitRedraw = (cardIndex: number) => {
|
||||||
|
if (disconnected) setConnect(connect + 1);
|
||||||
|
|
||||||
socket.emit('redraw', {
|
socket.emit('redraw', {
|
||||||
gameID,
|
gameID,
|
||||||
cardIndex,
|
cardIndex,
|
||||||
@@ -60,6 +74,8 @@ export default function useSocket({ gameID, setGameData, setNoGame }: UseSocketP
|
|||||||
};
|
};
|
||||||
|
|
||||||
const emitSelect = (cardIndex: number, cardID: string) => {
|
const emitSelect = (cardIndex: number, cardID: string) => {
|
||||||
|
if (disconnected) setConnect(connect + 1);
|
||||||
|
|
||||||
socket.emit('select', {
|
socket.emit('select', {
|
||||||
gameID,
|
gameID,
|
||||||
cardIndex,
|
cardIndex,
|
||||||
@@ -68,6 +84,8 @@ export default function useSocket({ gameID, setGameData, setNoGame }: UseSocketP
|
|||||||
};
|
};
|
||||||
|
|
||||||
const emitTilt = (cardIndex: number, tilt: Tilt) => {
|
const emitTilt = (cardIndex: number, tilt: Tilt) => {
|
||||||
|
if (disconnected) setConnect(connect + 1);
|
||||||
|
|
||||||
socket.emit('tilt', {
|
socket.emit('tilt', {
|
||||||
cardIndex,
|
cardIndex,
|
||||||
tilt,
|
tilt,
|
||||||
|
|||||||
Reference in New Issue
Block a user