Python Asyncio - 测试连接?

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

长话拍摄,我可以运行示例echo服务器代码并立即响应多个客户端。我正在尝试使用众多Chrome扩展程序之一与服务器进行通信,但无济于事。

码:

import asyncio

async def handle_echo(reader, writer):
    while True:
        data = await reader.read(500)
        if data:
            print(data)
            message = data.decode()
            addr = writer.get_extra_info('peername')
            print("Received %r from %r" % (message, addr))

            print("Send: %r" % message)
            writer.write(data)
            await writer.drain()

loop = asyncio.get_event_loop()
coro = asyncio.start_server(handle_echo, '127.0.0.1', 8888, loop=loop)
server = loop.run_until_complete(coro)

通常,我的示例客户端只发送“b'Hello World”,它工作正常。并且回复得到了很好的回复。

当我尝试连接浏览器扩展时,它会转储:

收到'GET / HTTP / 1.1 \ r \ n主机:127.0.0.1:8888 \ r \ n连接:升级\ r \ nPragma:no-cache \ r \ nCache-Control:no-cache \ r \ nUser-Agent:Mozilla / 5.0(X11; Linux x86_64)AppleWebKit / 537.36(KHTML,与Gecko一样)Chrome / 69.0.3497.100 Safari / 537.36 \ r \ n升级:websocket \ r \ nOrigin:file:// \ r \ nNSec-WebSocket-Version:13 \ r \ nAccept-Encoding:gzip,deflate,br \ r \ nAccept-Language:en-US,en; q = 0.9 \ r \ nSec-WebSocket-Key:SgWT / reHbAzxm4faPOq6VA == \ r \ n nSec-WebSocket-Extensions: permessage,放气; client_max_window_bits \ r \ n \ r \ n'来自('127.0.0.1',57046)发送:'GET / HTTP / 1.1 \ r \ n主机:127.0.0.1:8888 \ r \ n连接:升级\ r \ n \ nPragma:否-cache \ r \ nCache-Control:no-cache \ r \ nUser-Agent:Mozilla / 5.0(X11; Linux x86_64)AppleWebKit / 537.36(KHTML,类似Gecko)Chrome / 69.0.3497.100 Safari / 537.36 \ r \ n升级: websocket \ r \ nOrigin:file:// \ r \ nSec-WebSocket-Version:13 \ r \ nAccept-Encoding:gzip,deflate,br \ r \ nAccept-Language:en-US,en; q = 0.9 \ r \ n \ nSec-WebSocket-Key:SgWT / reHbAzxm4faPOq6VA == \ r \ nSec-WebSocket-Extensions:permessage-deflate; client_max_window_bits \ r \ n \ r \ n”

扩展程序挂起。我显然可以改变响应,但是我不确定我应该发回什么样的“ack”连接,然后理想情况下等待2路发送/接收通信。

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

浏览器扩展与HTTP进行通信,并期望接收正确的HTTP响应,而不是自己的请求。至少,响应应该从HTTP/1.1 200 Ok开始,在它自己的一行,然后是有意义的标题和正文。

如果您需要提供HTTP服务,请查看专用于此的库,例如aiohttp

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