2014-07-16 2 views
0

Flask-socketio (http://flask-socketio.readthedocs.org/en/latest/)를 사용 중입니다. events.py이를 사용하는 경우Flask-socketio, 다른 네임 스페이스에 이벤트를 내 보냅니다.

나는 현재

KeyError: '/local' 

을 얻고있다. 이 이벤트가 발생한 것과 별도의 네임 스페이스에 방출 할 수 영약 - socketio를 사용

@socketio.on('connect', namespace='/photo') 
def client_connect(): 
    emit('event', { 'type': 'client_connect' }, namespace='/local') 

: 서로 다른 네임 스페이스를 참고? 설명서에 나와있는 것처럼 보이지만 KeyError를 계속 가져 오는 이유는 무엇입니까?

편집 : 감사 @Miguel 당신의 제안 대답을, 나는 아래와 KeyError를 얻을 여전히 (멀리 프로젝트에서 오랜 시간 후) 다시 시도했지만 한 :

@socketio.on('connect', namespace='/local') 
def local_client_connect(): 
    print ('Local client connected.') 

@socketio.on('connect', namespace='/photo') 
def client_connect(): 
    print ('Client connected.') 
    send('client_connect', namespace='/local') 

을 나는 응용 프로그램 I을 실행하면 인쇄 된 '로컬 클라이언트 연결됨'을 참조하십시오. 그런 다음에야 클라이언트가/사진 경로에 액세스 할 수 있습니다. 나는 '클라이언트 연결'이 인쇄 된 것을보고 열쇠 고리를 보았다.

flask-socketio를 0.4.2로 업그레이드했습니다.

최고의 두 번째 네임 스페이스에있는 하나 이상의 핸들러가 필요

앤드류

+0

해결책을 찾았습니까? 아니면이 경우 무엇을해야할지 생각해 봤습니까? 감사합니다. . –

+0

결국 node.js에 모든 것을 구축했다고 생각합니다! 그래서 나는 두렵다. – roowilliams

+0

nodejs socketio에서 어떻게 구현 했습니까 ?? 위의 예제가 작동 했습니까 ?? –

답변

2

. 예를 들어 :

@socketio.on('connect', namespace='/local') 
def local_client_connect(): 
    pass 

그런 다음 플라스크-SocketIO은 약 /local을 알 수 있으며 메시지를 방출 할 수있을 것입니다.

+0

안녕하세요 @Miguel, 나는 당신의 제안을 시도했지만 여전히 '로컬'에 KeyError를 얻고 있습니다. 두 번째 이름 공간에 대한 핸들러는 원래 코드보다 먼저 선언되며 그 전에 호출되기도합니다. local_client_connect()는 client_connect() 전에 발생합니다. – roowilliams

관련 문제