Flask-SocketIOが問題を起こしています。Flask-SocketIO sidとnamespaceで問題が発生しました
@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)
は、残念ながら、私は、このようなAttributeError: 'Request' object has no attribute 'sid'
などのエラーを取得しています:私は、次のコードでのプライベートチャットルームを初期化しようとしています。 request.sid
を具体的に指定してもエラーになります。 sid
フィールドのランダムなものをjoin_room
に接続すると、名前空間エラーが発生します。私は必要なものをすべてインポートしていることを保証しました。
ここに特定のエラーメッセージがあります。
[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 -
ありがとうございました!私はFlaskとSocket.IOの騒ぎです。複数の部屋をインスタンス化するために、クライアントはクライアント側のコードで新しいソケット接続を開きますが、正しいですか?彼らが見ているWebページは、開いているソケットに固有のものは何でも、通常のHTMLになりますか? – agaidis
単一のクライアント接続を複数のルームに関連付けることができます。複数の接続を作成する必要はありません。同じクライアントに対して 'join_room()'を何度も呼び出すことは大丈夫です。 – Miguel
恐ろしい!ありがとうございました!! – agaidis