“WebSocket握手期间出错:状态行无效”

时间:2015-09-06 16:11:51

标签: python django websocket twisted

当连接到我的WebSocket时,我在客户端连接后立即收到上述错误。

2015-09-06 12:01:12-0400 [-] reactor class: twisted.internet.epollreactor.EPollReactor.
2015-09-06 12:01:12-0400 [-] ServerFactory starting on 1025
2015-09-06 12:01:12-0400 [-] Starting factory <twisted.internet.protocol.ServerFactory instance at 0x1f92f80>
2015-09-06 12:01:28-0400 [-] Got new client!
2015-09-06 12:01:28-0400 [-] received 'GET / HTTP/1.1'
2015-09-06 12:01:28-0400 [-] received 'Host: ip:1025'
2015-09-06 12:01:28-0400 [-] received 'Connection: Upgrade'
2015-09-06 12:01:28-0400 [-] received 'Pragma: no-cache'
2015-09-06 12:01:28-0400 [-] received 'Cache-Control: no-cache'
2015-09-06 12:01:28-0400 [-] received 'Upgrade: websocket'
2015-09-06 12:01:28-0400 [-] received 'Origin: http://server-ip.net'
2015-09-06 12:01:28-0400 [-] received 'Sec-WebSocket-Version: 13'
2015-09-06 12:01:28-0400 [-] received 'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36'
2015-09-06 12:01:28-0400 [-] received 'Accept-Encoding: gzip, deflate, sdch'
2015-09-06 12:01:28-0400 [-] received 'Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4'
2015-09-06 12:01:28-0400 [-] received 'Sec-WebSocket-Key: Au1JIvJG0A2Jep3+wqCPRg=='
2015-09-06 12:01:28-0400 [-] received 'Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits'
2015-09-06 12:01:28-0400 [-] received ''
2015-09-06 12:01:28-0400 [-] Lost a client!

在客户端,它看起来像这样:

WebSocket connection to 'ws://server-ip:1025/' failed: Error during WebSocket handshake: Invalid status line

我一直试图做的事情:

我跟着this tutorial创建了一个实时聊天(与Django一起)。我正在使用的chatserver.py直接来自他们的文档:https://twistedmatrix.com/documents/current/_downloads/chatserver.py。其余的(jQuery脚本等)就像在那个教程中一样。

1 个答案:

答案 0 :(得分:1)

MyChat.lineReceived将消息发送到每个连接的客户端,包括本身。我希望这意味着它会将收到的所有头文件回传给WebSocket客户端,这可能不是它所期望的。

您链接的ferritfarmer教程通过将MyChat的工厂包装在WebsocketResource中来处理此问题,这是对您直接从正常Twisted示例链接的chatserver.py的修改。

我相信WebsocketResource来自Twisted教程链接的特定开发分支。不幸的是,这个分支似乎停滞不前。我听说Autobahn的WebSocket实现是个好看的地方。