1

I'm trying to build a Flask server in Python that uses socket.io. As I have never used socket.io before I used the code from Miguel Grinberg to make a simple website to test if I can get it working. When I navigate to the website and then check the server-console I see requests coming in to "/socket.io/?EIO=4&transport=polling&t=<some code>" that are responded to with status code 200.

However, in my browser (Chrome) the console shows an error: "Uncaught DOMException: Failed to read the 'responseText' property from 'XMLHttpRequest': The value is only accessible if the object's 'responseType' is '' or 'text' (was 'arraybuffer')." screenshot

It seems to me like when calling io.connect in my javascript a request is made to the server but somehow the response or the processing of it fails which results in a failed connection.

Does anyone have any idea for why that happens and how to fix it?

My server side code is

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) 

The Javascript running on the client side is

$(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; }); }); 
1
  • I have the same issue. Did you find a solution? Commented Nov 16, 2020 at 19:06

1 Answer 1

2

I recently ran into the same problem.

It seems that flask-socketio is compatible with Socket.IO 2.x but not with Socket.IO 3.0. In my case, downgrading the JS library on the client side solved the problem.

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.