2013-02-26 1 views
1

저는 python 및 websockets를 처음 사용하고 pywebsocket 사용법에 대해 자세히 알고 싶습니다.Pywebsocket 오류

_GOODBYE_MESSAGE = u'Goodbye' 

def web_socket_do_extra_handshake(request): 
    request.ws_stream.send_message("Welcome", binary=False) # Error line 
    pass # Always accept. 

def web_socket_transfer_data(request): 
    while True: 
     line = request.ws_stream.receive_message() 
     if line is None: 
      return 
     if isinstance(line, unicode): 
      request.ws_stream.send_message("Sending", binary=False) 
      request.ws_stream.send_message(line, binary=False) 
      if line == _GOODBYE_MESSAGE: 
       return 
     else: 
      request.ws_stream.send_message(line, binary=True) 

내가 연결이 초기화 될 때 클라이언트로 "환영"메시지를 보낼 원 :

현재, pywebsocket 패키지에서 임 편집 예, 불행하게도, 나는 다음과 같은 코드 내 오류를 이해 드릴 수 없습니다. 그러나 핸드 셰이크에서 메시지를 보낼 때 내 웹 소켓은 으로 끝났습니다. 코드 1006

왜 그런가요? ,

_GOODBYE_MESSAGE = u'Goodbye' 
welcome = True 

def web_socket_do_extra_handshake(request): 
    pass # Always accept. 

def web_socket_transfer_data(request): 
    while True: 
     if welcome: 
      welcome = False 
      request.ws_stream.send_message("Welcome !", binary=False) 

     line = request.ws_stream.receive_message() 
     if line is None: 
      return 
     if isinstance(line, unicode): 
      request.ws_stream.send_message("Sending", binary=False) 
      request.ws_stream.send_message(line, binary=False) 
      if line == _GOODBYE_MESSAGE: 
       return 
     else: 
      request.ws_stream.send_message(line, binary=True) 

나는 둘 다 첫 번째 또는 두 번째 경우에 성공하지 :

이 나는 ​​핸드 셰이크 중에 데이터를 보낼 수없는 문제가 될 수있다 생각했다, 그래서 나는 이런 식으로 시도 당신은 을 설명 할 수 있습니까? 내가 잘못하고있는 것? 고마워요

추신 : 내가 아파치 (독립형이 아닌)의 모듈로 mod_pywebsocket를 실행 중입니다. 파이썬 버전은 2.6.6입니다.

첫 번째 코드 어떤 메시지를 보낼 수 없습니다

: 내 예제에서이 오류를 발견

답변

0

나는 구문 오류를 확인하기 위해 $python script_wsh.py를 사용하여 내 스크립트를 모두 실행하는 것을 시도했다 헤더가 성공적으로 구문 분석 및 웹 소켓 속성 (ws_location 후 핸드 셰이크 중에 클라이언트에

web_socket_do_extra_handshake는 0, 핸드 쉐이크 중에 호출한다ws_origin 및 ws_resource)가 요청에 추가됩니다. 처리기는 예외를 발생시켜 요청을 거부 ​​할 수 있습니다.

2 코드는

은 아마, 내 코드


에서 디버그 모드에서 웹 소켓을 실행하도록 웹 소켓 핸들러를 디버깅하는 가장 쉬운 방법이 나쁜 들여 쓰기 있었다 :

# Run standalone server with "--log-level debug" 
./standalone.py -p 12345 --allow-draft75 -d example --log-level debug 

# For apache module version, add LogLevel directive to httpd.conf 
LogLevel debug 

아파치 모듈로 websockets를 실행 중이며 구문 분석을 볼 수 있습니다 (및 기타) 아파치의 오류 로그에 오류가 발생했습니다