Flask-SocketIO me pose des problèmes. Je suis en train d'initialiser des salles de chat privé avec le code suivant:Problème de Flask-SocketIO avec le Sid et les espaces de noms
@socketio.on('join', namespace='/join')
def on_join(receiver_name):
username = session['username']
join_room(receiver_name) # start a chat room with the receiver's username
send(username + ' is now connected.', room=receiver_name)
Malheureusement, je reçois des erreurs telles que AttributeError: 'Request' object has no attribute 'sid'
. Même lorsque je spécifie spécifiquement request.sid
, j'obtiens une erreur. Quand je branche quelque chose de aléatoire pour le champ sid
dans join_room
, j'obtiens alors une erreur d'espace de noms. Je me suis assuré que j'importe tout le nécessaire etc.
Voici le message d'erreur spécifique.
[2017-10-04 10:02:48,297] ERROR in app: Exception on /start_chat [POST]
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1982, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1614, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1517, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python3.6/site-packages/flask/_compat.py", line 33, in reraise
raise value
File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1612, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1598, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/Users/agaidis/Desktop/challenge-backend-master/challenge-eng-base-master/backend-python/app.py", line 132, in start_chat
on_join(friend_username)
File "/Users/agaidis/Desktop/challenge-backend-master/challenge-eng-base-master/backend-python/app.py", line 152, in on_join
join_room(receiver_name) # start a chat room with the receiver's username
File "/usr/local/lib/python3.6/site-packages/flask_socketio/__init__.py", line 756, in join_room
sid = sid or flask.request.sid
File "/usr/local/lib/python3.6/site-packages/werkzeug/local.py", line 347, in __getattr__
return getattr(self._get_current_object(), name)
AttributeError: 'Request' object has no attribute 'sid'
127.0.0.1 - - [04/Oct/2017 10:02:48] "POST /start_chat HTTP/1.1" 500 -
Merci! Je suis un Noob à Flask et Socket.IO. Afin d'instancier plusieurs salles, les clients ouvrent de nouvelles connexions socket dans le code côté client, correct? La page Web qu'ils voient sera le HTML normal avec tout ce qui est spécifique à leur socket ouverte? – agaidis
Vous pouvez associer une connexion client unique à plusieurs salles, sans avoir besoin de créer plusieurs connexions. Il est totalement correct d'appeler 'join_room()' plusieurs fois pour le même client. – Miguel
Génial! Je vous remercie!! – agaidis