【问题标题】:socket.io client fails to connect to serversocket.io 客户端无法连接到服务器
【发布时间】:2020-11-15 01:14:18
【问题描述】:

我正在尝试在 Python 中构建一个使用 socket.io 的 Flask 服务器。因为在我使用code from Miguel Grinberg 制作一个简单的网站来测试我是否可以让它工作之前,我从未使用过socket.io。 当我导航到网站然后检查服务器控制台时,我看到进入“/socket.io/?EIO=4&transport=polling&t=”的请求以状态码 200 响应。

但是,在我的浏览器 (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


【解决方案1】:

我最近遇到了同样的问题。

flask-socketio 似乎与 Socket.IO 2.x 兼容,但与 Socket.IO 3.0 不兼容。就我而言,在客户端降级 JS 库解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-14
    • 2018-05-12
    • 1970-01-01
    • 2021-04-02
    • 1970-01-01
    • 2015-09-12
    • 2012-10-15
    相关资源
    最近更新 更多