gpt4 book ai didi

javascript - 套接字 : data loss due to socket getting closed due to transport error

转载 作者:太空宇宙 更新时间:2023-11-03 21:14:22 26 4
gpt4 key购买 nike

我一直在努力解决这个问题,但到目前为止还没有成功。因此,我在循环中使用套接字从服务器向客户端发送一些数据,但是客户端无法接收所有数据并无缘无故地在数据传输过程中关闭套接字。

如下图所示,客户端成功接收数据,直到循环的第 11 次迭代为止(请参阅下面的服务器代码),但是在该套接字因传输错误而关闭之后。我在这里可能做错了什么?

客户端日志

enter image description here

服务器端日志

enter image description here

(Python)服务器端代码

from flask import Flask, render_template, request, flash, redirect, jsonify, make_response
from flask_socketio import SocketIO, emit, disconnect

import time

from gevent import monkey
monkey.patch_all()

app = Flask(__name__)
socketio = SocketIO(app, engineio_logger=True)

@socketio.on('run_tgt')
def run_tg(tg_args):
for x in range(20):
time.sleep(2)
emit('tg_output',x)

if __name__ == "__main__":
socketio.run(app, host='0.0.0.0', debug=True)

(Javascript)客户端代码

 <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.0.3/socket.io.js"></script>
var socket = io.connect('http://' + document.domain + ':' + location.port );
function run_tg() {
socket.emit('run_tgt', { 'data': 'data'});
socket.on('tg_output', function(tg_output) {
console.log(tg_output);
$("#output_div").append(tg_output);
});
}

最佳答案

通过在脚本顶部添加猴子补丁修复了问题

from gevent import monkey
monkey.patch_all()

同时将 async_handlers 设置为 true

socketio = SocketIO(app, async_handlers=True, engineio_logger=True)

关于javascript - 套接字 : data loss due to socket getting closed due to transport error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54831808/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com