google-chrome - Websocket 连接错误 资源不足

标签 google-chrome sockets websocket socket.io flask-socketio

我正在开发一个聊天应用程序,两个用户可以在其中相互交谈,我正在使用 flask-socketio 和 React 来做这件事。

我一直在努力解决我在使用 socket.io 时遇到的这个问题。这是我在浏览器控制台上偶尔遇到的错误连接:

与“ws://127.0.0.1:5000/socket.io/?EIO=4&transport=websocket&sid=s8DKBembmWoxgGAsAAqX”的 WebSocket 连接失败:资源不足

我很难找出导致此错误的原因。我解决这个问题的方法是刷新页面,然后重新建立连接。我想找到一个解决方案,我不会一直与套接字断开连接并收到相同的错误消息。关于如何做到这一点的任何想法?

最佳答案

socket 和 react 的一个常见问题是实例化 WebSocket 的频率。

react 中套接字的错误使用

这是一个不应在 react 组件中设置它的示例。每次组件重新渲染时,都会建立一个新的socket,这会导致Insufficient resources错误。

import React, {useState} from 'react'
import { io } from "socket.io-client";

export default function MockSocket() {
  const [message, setMessage] = useState("");

  const socket = io();
  socket.connect();
  socket.on("recieve_message", setMessage);

  return (
    <div>
      {message}
    </div>
  )
}

react 中正确使用套接字

相反,使用 useEffect 包装 WebSockets 的实例化(这样它只会触发一次,并在组件卸载时断开连接)。

import React, {useEffect, useState} from 'react'
import { io } from "socket.io-client";

export default function MockSocket() {
  const [message, setMessage] = useState("");
 
  useEffect(
    () => {
      const socket = io();
      socket.connect();
      socket.on("recieve_message", setMessage);
      
      return () => {
        socket.disconnect();
      }
    },
    []
  )

  return (
    <div>
      {message}
    </div>
  )
}

关于google-chrome - Websocket 连接错误 资源不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69008820/

相关文章:

javascript - 如何从 Chrome 开发者控制台访问 w3school 页面上的元素?

html - 当 &lt;input&gt; 标签上的 "-webkit-appearance: none"和值 =""时,Chrome 中的高度不正确

linux - 从挂起恢复后的长生命周期 ping 程序不接收 pong

javascript - 使用 Jasmine 在 JavaScript 中插入 WebSocket

google-chrome - 在 wss 安全模式下运行时,chrome 中的 websocket 性能明显较差

java - 如何在浏览器的新窗口中打开PDF文件?

javascript - 将消息从开发工具面板发送到 Chrome 扩展程序中的新选项卡

c - 如何将数据从数组发送到指针变量并从指针变量返回到数组?

c# - 使连接的套接字在.BeginReceive 之后立即接受新消息?

javascript - Nodejs、Express 和 WebSockets : Relaying a message to all clients other than the sender