I'm currently trying to understand how sockets work. I'm using Flask-socketio and a python socketio client and running through a basic example. Here is what I have done so far
from flask import Flask, render_template
from flask_socketio import SocketIO, emit
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)
@socketio.on('aaa')
def test_connect():
print("Welcome, aaa received")
emit('aaa_response', {'data': 'Server'})
if __name__ == '__main__':
socketio.run(app, port=8000)
from socketIO_client import SocketIO, LoggingNamespace
def on_aaa_response(args):
print('on_aaa_response', args['data'])
socketIO = SocketIO('localhost', 8000, LoggingNamespace)
socketIO.on('aaa_response', on_aaa_response)
socketIO.emit('aaa')
socketIO.wait(seconds=1)
I get an assertion error when I run the client.py
. I do see the server printing "Welcome, aaa recived"
though. I don't know what am I doing wrong here, If thats required here is my log
Error log
Exception in thread Thread-1:
Traceback (most recent call last):
File "c:\users\dj\appdata\local\programs\python\python36\Lib\threading.py", li
ne 916, in _bootstrap_inner
self.run()
File "C:\Users\Dj\Desktop\Flask\FLASK-SOCKET\venv\lib\site-packages\socketIO_c
lient\heartbeats.py", line 27, in run
self._send_heartbeat()
File "C:\Users\Dj\Desktop\Flask\FLASK-SOCKET\venv\lib\site-packages\socketIO_c
lient\__init__.py", line 203, in _ping
engineIO_packet_type, engineIO_packet_data)
File "C:\Users\Dj\Desktop\Flask\FLASK-SOCKET\venv\lib\site-packages\socketIO_c
lient\transports.py", line 109, in send_packet
assert response.content == b'ok'
AssertionError
Traceback (most recent call last):
File "demo.py", line 8, in <module>
socketIO.emit('aaa')
File "C:\Users\Dj\Desktop\Flask\FLASK-SOCKET\venv\lib\site-packages\socketIO_c
lient\__init__.py", line 424, in emit
self._message(str(socketIO_packet_type) + socketIO_packet_data)
File "C:\Users\Dj\Desktop\Flask\FLASK-SOCKET\venv\lib\site-packages\socketIO_c
lient\__init__.py", line 33, in wrap
return f(*args, **kw)
File "C:\Users\Dj\Desktop\Flask\FLASK-SOCKET\venv\lib\site-packages\socketIO_c
lient\__init__.py", line 219, in _message
transport.send_packet(engineIO_packet_type, engineIO_packet_data)
File "C:\Users\Dj\Desktop\Flask\FLASK-SOCKET\venv\lib\site-packages\socketIO_c
lient\transports.py", line 109, in send_packet
assert response.content == b'ok'
AssertionError
Exception ignored in: <bound method SocketIO.__del__ of <socketIO_client.SocketI
O object at 0x00000028079DC320>>
Traceback (most recent call last):
File "C:\Users\Dj\Desktop\Flask\FLASK-SOCKET\venv\lib\site-packages\socketIO_c
lient\__init__.py", line 364, in __del__
File "C:\Users\Dj\Desktop\Flask\FLASK-SOCKET\venv\lib\site-packages\socketIO_c
lient\__init__.py", line 400, in disconnect
File "C:\Users\Dj\Desktop\Flask\FLASK-SOCKET\venv\lib\site-packages\socketIO_c
lient\__init__.py", line 193, in _close
File "C:\Users\Dj\Desktop\Flask\FLASK-SOCKET\venv\lib\site-packages\socketIO_c
lient\transports.py", line 108, in send_packet
File "C:\Users\Dj\Desktop\Flask\FLASK-SOCKET\venv\lib\site-packages\socketIO_c
lient\transports.py", line 191, in get_response
File "C:\Users\Dj\Desktop\Flask\FLASK-SOCKET\venv\lib\site-packages\requests\s
essions.py", line 555, in post
File "C:\Users\Dj\Desktop\Flask\FLASK-SOCKET\venv\lib\site-packages\requests\s
essions.py", line 494, in request
File "C:\Users\Dj\Desktop\Flask\FLASK-SOCKET\venv\lib\site-packages\requests\s
essions.py", line 419, in prepare_request
File "C:\Users\Dj\Desktop\Flask\FLASK-SOCKET\venv\lib\site-packages\requests\c
ookies.py", line 537, in merge_cookies
File "C:\Users\Dj\Desktop\Flask\FLASK-SOCKET\venv\lib\site-packages\requests\c
ookies.py", line 353, in update
File "C:\Users\Dj\Desktop\Flask\FLASK-SOCKET\venv\lib\copy.py", line 96, in co
py
ImportError: sys.meta_path is None, Python is likely shutting down
Socket.IO is a library that enables low-latency, bidirectional and event-based communication between a client and a server. It is built on top of the WebSocket protocol and provides additional guarantees like fallback to HTTP long-polling or automatic reconnection.
My own Flask-SocketIO extension has also been a favorite, but this is Socket.IO, which is a more complex protocol that combines WebSocket and HTTP.
Flask-SocketIO gives Flask applications access to low latency bi-directional communications between the clients and the server.
Based on the stack trace, I could not identify the version of the socketIO-client
package that you are using. It does not appear to be a current one.
I have tested your two applications here and they seem to work perfectly fine with version 0.7.2 of the client. I suggest you run pip install --upgrade socketIO-client==0.7.2
and then try again.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With