【发布时间】:2020-11-15 01:14:18
【问题描述】:
我正在尝试在 Python 中构建一个使用 socket.io 的 Flask 服务器。因为在我使用code from Miguel Grinberg 制作一个简单的网站来测试我是否可以让它工作之前,我从未使用过socket.io。
当我导航到网站然后检查服务器控制台时,我看到进入“/socket.io/?EIO=4&transport=polling&t=
但是,在我的浏览器 (Chrome) 中,控制台显示错误: “未捕获的 DOMException:无法从 'XMLHttpRequest' 读取 'responseText' 属性:该值仅在对象的 'responseType' 为 '' 或 'text'(为 'arraybuffer')时才可访问。” screenshot
在我看来,当在我的 javascript 中调用 io.connect 时,向服务器发出了一个请求,但不知何故,响应或它的处理失败,导致连接失败。
有人知道为什么会发生这种情况以及如何解决吗?
我的服务器端代码是
from flask import Flask, render_template
from flask_socketio import SocketIO, emit
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)
@app.route('/')
def index():
return render_template('index.html')
@socketio.on('my event', namespace='/test')
def test_message(message):
emit('my response', {'data': message['data']})
@socketio.on('connect', namespace='/test')
def test_connect():
emit('my response', {'data': 'Connected'})
@socketio.on('disconnect', namespace='/test')
def test_disconnect():
print('Client disconnected')
if __name__ == '__main__':
socketio.run(app)
客户端运行的Javascript是
$(document).ready(function(){
var socket = io.connect('http://' + document.domain + ':' + location.port + '/test');
socket.on('my response', function(msg) {
$('#log').append('<p>Received: ' + msg.data + '</p>');
});
$('form#emit').submit(function(event) {
socket.emit('my event', {data: $('#emit_data').val()});
return false;
});
});
【问题讨论】:
-
我也有同样的问题。你找到解决办法了吗?
标签: flask socket.io flask-socketio