Python httplib websocket升级请求

时间:2014-03-29 07:22:34

标签: python websocket httpclient httplib

python和websockets的新手,但我正在尝试执行以下操作:

import httplib
conn = httplib.HTTPConnection('localhost:8888')

conn.putheader('Connection', 'Upgrade')
conn.putheader('Upgrade', 'websocket')
conn.endheaders()
conn.send('Hello to websocket!')

到达putheader时崩溃

服务器代码是用Node.js编写的

var http = require('http');

http.createServer(function (request, response) {
    console.log(request);
}).on('upgrade', function(request, socket, head) {
    console.log('Upgrade request! Woohoo!');
    socket.connect(8080, 'localhost', function(data) {
        console.log('data');
    });
    socket.write('Socket is open!');
}).listen(8888);

并不是真的担心服务器代码是正确的(如果我需要从我的Python客户端发送请求,我会修复它),但我想知道如何使用httplib升级到websocket的连接(如果有可能)。

2 个答案:

答案 0 :(得分:0)

我不确定,但httplib有异步请求的问题。看看框架tornado,他可以处理websocket和异步请求,非常简单。

答案 1 :(得分:0)

httplib不会说WebSocket。手动添加升级标头并不神奇。它也是同步工作的,对于WebSocket来说,这是不可取的。

除了已经提到的Tornado之外,您还可以查看Autobahn,它可以使用Twisted和asyncio作为底层异步网络库。

披露:我是Autobahn的原作者,并为Tavendo工作。