2015-10-05 55 views
1

我正在使用龍捲風進行實時應用。我爲此使用了redis。 當我訪問網址127.0.0.1:8888/2/其中2是我的用戶ID我得到錯誤說can "Upgrade" only to websocket龍捲風只能升級到websocket錯誤

我不知道爲什麼我得到這個錯誤。這個錯誤是因爲我的代碼或websocket的問題?

在我的javascript我做ws = new WebSocket("ws://127.0.0.1:8888/" + user_id + "/");

當我這樣做127.0.0.1:8888它打印我在GET正在印刷()在RequestHandler

功能需要諮詢

+0

請問您處理類擴展'tornado.websocket.WebSocketHandler '班? – VisioN

+0

是的,它確實延伸.. – aryan

+1

並且你的描述中的路線有斜線'/'?對我來說,它看起來像路線不匹配。您也可以在問題中發佈您的Python代碼。 – VisioN

回答

1

這是龍捲風的GET方法的開始處理WebSocket:

@tornado.web.asynchronous 
def get(self, *args, **kwargs): 
    self.open_args = args 
    self.open_kwargs = kwargs 

    # Upgrade header should be present and should be equal to WebSocket 
    if self.request.headers.get("Upgrade", "").lower() != 'websocket': 
     self.set_status(400) 
     self.finish("Can \"Upgrade\" only to \"WebSocket\".")                                                    
     return 

因此,您收到的錯誤消息是由沒有在請求中缺少「升級」標頭,當您在瀏覽器中簡單地獲取URL時,您看到此消息時不會出現錯誤。但是,如果您使用的JS代碼,你提供的,然後你運行ws.send("message")例如,你應該能夠捕獲並處理您的龍捲風WebSocketHandler此消息:

def on_message(self, message): 
    print(message) # print the message to a standard output 
    self.write_message(message) # throw it back to client