mirror of https://github.com/msgbyte/tailchat
				
				
				
			feat: 增加socket上下文并增加模拟重连机制的调试
							parent
							
								
									ee0a0972b5
								
							
						
					
					
						commit
						04b92b9f17
					
				@ -0,0 +1,30 @@
 | 
			
		||||
import { Button } from 'antd';
 | 
			
		||||
import React, { useEffect, useState } from 'react';
 | 
			
		||||
import { useSocketContext } from '@/context/SocketContext';
 | 
			
		||||
 | 
			
		||||
export const SettingsDebug: React.FC = React.memo(() => {
 | 
			
		||||
  const socket = useSocketContext();
 | 
			
		||||
  const [socketConnected, setSocketConnected] = useState(true);
 | 
			
		||||
 | 
			
		||||
  useEffect(() => {
 | 
			
		||||
    const id = setInterval(() => {
 | 
			
		||||
      setSocketConnected(socket.connected);
 | 
			
		||||
    }, 1000);
 | 
			
		||||
 | 
			
		||||
    return () => {
 | 
			
		||||
      clearInterval(id);
 | 
			
		||||
    };
 | 
			
		||||
  }, []);
 | 
			
		||||
 | 
			
		||||
  return (
 | 
			
		||||
    <div>
 | 
			
		||||
      <p>当前Socket状态: {JSON.stringify(socketConnected)}</p>
 | 
			
		||||
      <div className="space-x-1">
 | 
			
		||||
        <Button type="primary" onClick={() => socket.mockReconnect()}>
 | 
			
		||||
          Socket 模拟重连
 | 
			
		||||
        </Button>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
  );
 | 
			
		||||
});
 | 
			
		||||
SettingsDebug.displayName = 'SettingsDebug';
 | 
			
		||||
@ -0,0 +1,21 @@
 | 
			
		||||
import React, { useContext } from 'react';
 | 
			
		||||
import type { AppSocket } from 'tailchat-shared';
 | 
			
		||||
 | 
			
		||||
const SocketContext = React.createContext<AppSocket>({} as AppSocket);
 | 
			
		||||
SocketContext.displayName = 'SocketContext';
 | 
			
		||||
 | 
			
		||||
export const SocketContextProvider: React.FC<{ socket: AppSocket }> =
 | 
			
		||||
  React.memo((props) => {
 | 
			
		||||
    return (
 | 
			
		||||
      <SocketContext.Provider value={props.socket}>
 | 
			
		||||
        {props.children}
 | 
			
		||||
      </SocketContext.Provider>
 | 
			
		||||
    );
 | 
			
		||||
  });
 | 
			
		||||
SocketContextProvider.displayName = 'SocketContextProvider';
 | 
			
		||||
 | 
			
		||||
export function useSocketContext(): AppSocket {
 | 
			
		||||
  const context = useContext(SocketContext);
 | 
			
		||||
 | 
			
		||||
  return context;
 | 
			
		||||
}
 | 
			
		||||
					Loading…
					
					
				
		Reference in New Issue