设置SocketIO和Flask时出现以下错误:“UnboundLocalError:赋值前引用的局部变量'ssl\u socket'”

2024-04-20 09:31:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用flask设置socketio,并且有一些错误阻止它运行。你知道吗

File "src/gevent/greenlet.py", line 705, in gevent._greenlet.Greenlet.run     
  File "/Users/hairy/anaconda2/lib/python2.7/site-packages/gevent/baseserver.py", line 26, in _handle_and_close_when_done
  return handle(*args_tuple)
File "/Users/hairy/anaconda2/lib/python2.7/site-packages/gevent/server.py", line 193, in wrap_socket_and_handle
   ssl_socket.close()
UnboundLocalError: local variable 'ssl_socket' referenced before assignment  
2019-07-30T15:07:15Z <Greenlet "Greenlet-0" at 0x102908500: _handle_and_close_when_done(<bound method WSGIServer.wrap_socket_and_handle of, <bound method WSGIServer.do_close of <WSGIServer a, (<socket at 0x1067882d0 fileno=[Errno 9] Bad file )> failed with UnboundLocalError

这是我的密码:

from flask import Flask, render_template, Markup
from util import getHtml, duplicate, displayArray
from flask_socketio import SocketIO, emit
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)

@app.route('/')
def home():
    return displayArray()
@socketio.on('connect')
def test_connect():
    emit('after connect',  {'data':'Lets dance'})
@socketio.on('plz reload', namespace='/test')
def test_message(message):
    emit('reload', {'data': message['data']})

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

这是我的js代码:

$(document).ready(function(){
    var socket = io.connect('http://localhost:5000');
//  var socket = io.connect('http://' + document.domain + ':' + location.port + '/test');
//      var socket = io.connect('http://localhost:5000');
    socket.on('connect', function() {
            socket.emit('my event', {data: 'I\'m connected!'});
        });
    socket.on('reload', function(msg) {
        $('#log').append('<p>Received: ' + msg.data + '</p>');
        location.reload();
    });
});

当我转到本地主机:5000你知道吗


Tags: andtestappflaskclosedataonconnect
1条回答
网友
1楼 · 发布于 2024-04-20 09:31:54

我改了

    var socket = io.connect('http://localhost:5000');

var socket = io.connect();

在js里。我不知道为什么这个能修好它,但它确实修好了。你知道吗

相关问题 更多 >