当连接到我的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脚本等)就像在那个教程中一样。
答案 0 :(得分:1)
MyChat.lineReceived
将消息发送到每个连接的客户端,包括本身。我希望这意味着它会将收到的所有头文件回传给WebSocket客户端,这可能不是它所期望的。
您链接的ferritfarmer教程通过将MyChat的工厂包装在WebsocketResource
中来处理此问题,这是对您直接从正常Twisted示例链接的chatserver.py
的修改。
我相信WebsocketResource来自Twisted教程链接的特定开发分支。不幸的是,这个分支似乎停滞不前。我听说Autobahn的WebSocket实现是个好看的地方。