我无法获取套接字信息

时间:2019-09-23 16:42:00

标签: reactjs socket.io

我“有”套接字聊天了。

我的问题是:我希望每个用户有1个单一连接,所以:

const [socket, setSocket] = useState();

  const initSocket = () => {
    const socket = io(`${process.env.REACT_APP_BACKEND_DOMAIN}`, {forceNew:false, query: {idUser: props.user._id}})
    console.log(socket)
      socket.on('connect', ()=> console.log('conectado'));
      setSocket(socket)
  }
  useEffect(()=>{
    initSocket()
  // eslint-disable-next-line react-hooks/exhaustive-deps
  }, [])

这是我的反应。如果我以初始值连接到io( $ {process.env.REACT_APP_BACKEND_DOMAIN} , {forceNew:false, query: {idUser: props.user._id}}),则将获得4个套接字连接!所以我在componentdidmount中初始化了套接字。

问题是我该如何收听新消息?

当我将初始值放在Socket状态时,我没有遇到问题,因为在第一次使用useEffect时,我已设置了套接字。但是现在,我必须有条件地...

 useEffect(()=>{
    if(socket){
      console.log('he entrado')
      socket.on('isTyping', objeto => {
        const {idChat, isTyping, idUser} = objeto;
      }) 
      socket.on('message', message => {
        setMessages([...messages, message])
        scrollToBottom();
      })
    }
  })

现在,当我发送消息时,请不要输入useEffect,并且不出现(在第二个对话中):/

我该怎么做?

0 个答案:

没有答案