Browse Source

웹소켓 cleanup 적용

pull/2/head
김장현 2 years ago
parent
commit
3c9772c20f
  1. 14
      src/components/websocket/WebsocketClient.js

14
src/components/websocket/WebsocketClient.js

@ -1,4 +1,4 @@
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState, useRef } from 'react';
import { VscLoading } from 'react-icons/vsc'; import { VscLoading } from 'react-icons/vsc';
import { useDispatch, useSelector } from 'react-redux'; import { useDispatch, useSelector } from 'react-redux';
import { WS_HOST } from '../../configs/constants'; import { WS_HOST } from '../../configs/constants';
@ -9,27 +9,31 @@ const WebsocketClient = () => {
const reConnectionTime = 5000; //5초 const reConnectionTime = 5000; //5초
const [isConnection, setIsConnection] = useState(false); const [isConnection, setIsConnection] = useState(false);
const websocket = useRef(null);
useEffect(() => { useEffect(() => {
connect(); connect();
return () => {
websocket.current.close();
};
}, []); }, []);
const connect = () => { const connect = () => {
let websocket = new WebSocket(WS_HOST); websocket.current = new WebSocket(WS_HOST);
websocket.onopen = () => { websocket.current.onopen = () => {
setIsConnection(true); setIsConnection(true);
console.log('[Websocket Open] Connection Open'); console.log('[Websocket Open] Connection Open');
}; };
websocket.onmessage = e => { websocket.current.onmessage = e => {
const data = e.data; const data = e.data;
const controlGpList = JSON.parse(data); const controlGpList = JSON.parse(data);
dispatch(Actions.controlGpAction.request(controlGpList)); dispatch(Actions.controlGpAction.request(controlGpList));
}; };
websocket.onclose = event => { websocket.current.onclose = event => {
setIsConnection(false); setIsConnection(false);
setTimeout(function () { setTimeout(function () {
connect(); connect();

Loading…
Cancel
Save