V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
pin621
V2EX  ›  React

socket.io-client 前端一直监听发送不了消息到服务端

  •  
  •   pin621 · Dec 8, 2020 · 2472 views
    This topic created in 1971 days ago, the information mentioned may be changed or developed.

    //SocketProvider.tsx

    import React, { useContext, useEffect, useState } from 'react';
    import { io } from 'socket.io-client';
    /**
     * 创建 context
     */
    const SocketContext = React.createContext(null)
    
    /**
     * 调用 socket
     */
    export function useSocket() {
      return useContext(SocketContext)
    }
    
    /**
     * 提供 socket
     * @param children 子组件
     */
    export function SocketProvider({ children }) {
      const [socket, setSocket] = useState()
    
      useEffect(()=>{
        const newSocket = io('ws://localhost:7001')
        setSocket(newSocket)
    
        return () => newSocket.close()
      }, [])
    
      return (
        <SocketContext.Provider value={socket}>
          {children}
        </SocketContext.Provider>
      )
    }
    

    //app.tsx 中使用 SocketProvider

     <SocketProvider>
     	{children}
     </SocketProvider>
    

    //子组件中调用 socket

     const socket= useSocket()
     console.log(socket)
    

    //控制台 socket 对象

    acks: proto: Object connected: false disconnected: true

    2 replies    2020-12-08 18:45:07 +08:00
    joesonw
        1
    joesonw  
       Dec 8, 2020
    socket.on('connect')之后才算连上吧

    https://github.com/streamich/react-use/blob/master/docs/useAsyncFn.md 这个包一下
    zhongrs232
        2
    zhongrs232  
       Dec 8, 2020
    巧了这头像
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2578 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 07:01 · PVG 15:01 · LAX 00:01 · JFK 03:01
    ♥ Do have faith in what you're doing.