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 -
감사합니다. 나는 플라스크와 소켓에 멍청이야 .IO. 여러 개의 방을 인스턴스화하기 위해 클라이언트는 클라이언트 측 코드에서 새로운 소켓 연결을 열어 줍니까? 그들이 볼 수있는 웹 페이지는 열린 소켓에 특정한 것들이있는 일반 HTML이 될 것입니다. – agaidis
단일 클라이언트 연결을 여러 회의실과 연결할 수 있으므로 여러 연결을 만들 필요가 없습니다. 동일한 클라이언트에 대해'join_room() '을 여러 번 호출하는 것은 괜찮습니다. – Miguel
굉장! 고맙습니다!! – agaidis