Длинная история, я могу получить пример кода сервера эха и ответить на несколько клиентов одновременно.Я пытаюсь использовать одно из многочисленных расширений 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 \ nHost: 127.0.0.1:8888\r\nConnection: Upgrade \r \ nПрагма: без кэширования \ r \ nCache-Control: без кэширования \ r \ nПользователь-агент: Mozilla / 5.0 (X11; Linux x86_64) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 69.0.3497.100 Safari / 537.36\ r \ nОбновить: websocket \ r \ nПроисхождение: file: // \ r \ nSec-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 \ nSec-WebSocket-Extensions: permessage-deflate;client_max_window_bits \ r \ n \ r \ n 'from (' 127.0.0.1 ', 57046) Отправить:' GET / HTTP / 1.1 \ r \ nHost: 127.0.0.1:8888\r\nConnection: Upgrade \ r \ nПрагма: нет-cache \ r \ nCache-Control: no-cache \ r \ nПользователь-агент: Mozilla / 5.0 (X11; Linux x86_64) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 69.0.3497.100 Safari / 537.36 \ r \ nОбновить:websocket \ r \ nПроисхождение: file: // \ r \ nSec-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 \ nSec-WebSocket-Extensions: permessage-deflate;client_max_window_bits \ r \ n \ r \ n '
И расширение зависает.Я, очевидно, могу изменить ответ, но я не уверен, что я должен отправить обратно, чтобы вроде «подтвердить» соединение, а затем просто в идеале дождаться двухсторонней связи send / recv.