客户端的WebSocket通过代理连接

问题描述 投票:0回答:1

我使用的是websockets模块,但它不支持连接,虽然我公司代理的客户端连接:

>>> import asyncio, websockets
>>> async def connect(uri):
...     async with websockets.connect(uri) as websocket:
...         pass
...
>>> asyncio.get_event_loop().run_until_complete(connect('ws://myhost.com/path/'))
    ....
ConnectionRefusedError: [Errno 10061] Connect call failed ('myhost.com', 80)

但是,如果使用卷曲我http_proxy的环境变量设置,它的工作原理:

$ curl -i -N -H "Connection: Upgrade" -H "Upgrade: websocket" -H "Sec-WebSocket-Version: 13" -H "Sec-WebSocket-Key: MTIzNDEyMzQxMjM0MTIzNA==" http://myhost.com/path/
HTTP/1.1 101 Switching Protocols
Server: nginx/1.13.6
Date: Fri, 10 Nov 2017 14:51:00 GMT
Upgrade: websocket
Sec-WebSocket-Accept: s+CT5bkW5F3N2/5JUXrCPtLHn68=
Connection: Upgrade

什么是我的最佳选择?其他一些模块使客户的WebSocket所连接?

python-3.x websocket python-asyncio http-proxy
1个回答
1
投票

使用pip install websocket-client。然后把你的http*_proxy变量os.environ平时一样。代码如下所示:

ws = websocket.create_connection('ws://example.com/path')
ws.send(out_data)
in_data = ws.recv()

如果你不知道到底是什么协议代理使用,建立这样的例子都http*_proxy变量:

$ export http_proxy=http://jonasb:password@proxyserver:8000
$ export https_proxy=https://jonasb:password@proxyserver:8000

(假设你的用户名是jonasb和端口是8000)。

© www.soinside.com 2019 - 2024. All rights reserved.