当前位置: 首页 > 知识库问答 >
问题:

使用烧瓶插座频繁断开插座连接

颛孙麻雀
2023-03-14

我正在使用flask-soketio从我的python Web服务器到javascript客户端进行套接字连接。我能够建立连接,但它在一段时间(5秒左右)与错误中断

socket.io.min.js:2 WebSocket连接到ws://localhost:5000/socket.io/?EIO=3

发送消息的服务器端代码(定期调用此代码,例如每5秒一次)

def send_message(result):
    # it will forward the message to all clients.
    print("sending message")
    socketio.send("Send working",  json=False)

接收消息的客户端代码

socket.on('message', function (data) {
    console.log('message form backend ' + data);
});

不知怎的,它坏了-

有人能帮忙吗?谢谢!

共有1个答案

顾梓
2023-03-14

我修好了。

socketio = SocketIO(app,ping_timeout=5)

ping_timeout-客户端在断开连接之前等待服务器响应的时间(以秒为单位)。所以如果你什么都不做,5秒钟后它就会断开。

解决方案是:让您的客户端在超时前向服务器发送消息。

因为我的服务器通常发送数据,所以我将客户端设置为:

socket.on('message', function (data) {
    console.log('message form backend ' + data);
    socket.send('data receive!');
});
 类似资料:
  • 当我在电子中运行 socket.io 时,我在开发人员控制台中不断收到此错误。 当我建立它时,插座总是立即断开。我的客户甚至没有得到socket.emit我在连接一建立就得到,直到一两分钟后。 客户端和服务器位于同一版本的socket.io上。 服务器: 客户: 这不是完整的代码,但除了一些其他不应影响连接的侦听器之外,没有其他与websockets交互的内容。 服务器没有显示任何问题。它告诉我每

  • 我试图创建群聊android应用程序和使用Websocket服务器编写的PHP。这个服务器在Web浏览器上工作得很好,但当我试图在android应用程序中使用它时,应用程序一连接就断开了。 这里是Android代码:

  • 我试图了解Socketchannes和NIO的总体情况。我知道如何使用常规套接字,以及如何为每个客户机服务器创建一个简单的线程(使用常规阻塞套接字)。 所以我的问题是: 什么是袜子通道 当我使用SocketChannel而不是Socket时,额外得到了什么 通道和缓冲区之间的关系是什么 什么是选择器 文档中的第一句话是

  • 问题内容: Java 类有两种方法,分别检查套接字是关闭还是连接。我想知道仅开放的TCP套接字与开放和连接的TCP套接字有什么区别,这与UDP有何不同。 问题答案: 为了把事情简单地说,这是 开放的 是要么等待连接或已与另一个成功连接的插座。当一个套接字被 关闭 ,这意味着这个套接字没有连接不再可用,而且它的资源已被释放。一个已连接的好,这意味着该套接字已连接到另一个。 这样可以 同时打开并连接。

  • 我目前正在编写一个简单的TCP聊天客户端服务器应用程序,它与套接字一起工作。客户端连接到服务器,一旦被接受,就会创建一个新的工作线程来侦听客户端输入。连接到服务器(端口8818处的localhost)工作正常,但只要工作线程在登录java.net之后开始监听更多客户端输入。SocketException:引发连接重置(请参阅下面的堆栈跟踪)。我知道,此异常的一个可能来源可能是服务器或客户端未正确或

  • 背景我正试图为我的java服务器创建一个android客户端应用程序,并让它们使用TCP套接字进行通信。 当我在android设备模拟器上运行我的应用程序时,它的工作原理是什么 当我在手机上运行该应用程序时,我无法正常工作,我在创建套接字时遇到连接超时。 异常 java.net.Connect异常: 无法连接到 /10.0.2.2 (端口 9111): 连接失败: ETIMEDOUT (连接超时)

  • 我在服务器上使用Dart 1.8.5。我想实现TCP Socket Server,它侦听传入连接,向每个客户端发送一些数据,并在客户端断开连接时停止生成数据。 下面是示例代码 此代码接受连接并打印“发送数据”。但即使客户不在,它也不会打印“停止发送”。 问题是:如何捕捉侦听器中的客户端断开?

  • 有没有办法设置(即减少)套接字的轮询频率。使用长轮询传输时的IO (v4.4)?在服务器上还是在客户机上? 文档中描述了长轮询传输,通常在无法建立 WebSocket 连接时充当回退(但可以显式设置): 套接字之间的双向通道。IO服务器(Node.js)和套接字。IO客户端(browser、Node.js或其他编程语言)尽可能使用WebSocket连接建立,并将使用HTTP长轮询作为后备。