#python #function #websocket
#python #функция #веб-сокет
Вопрос:
Из примера, найденного здесь: http://websockets.readthedocs.io/en/stable/intro.html
Может кто-нибудь объяснить, что здесь делает параметр ‘path’? Является ли это кортежем для хоста и порта, необходимых websocket.serve()?
import asyncio
import websockets
async def hello(websocket, path):
name = await websocket.recv()
print("< {}".format(name))
greeting = "Hello {}!".format(name)
await websocket.send(greeting)
print("> {}".format(greeting))
start_server = websockets.serve(hello, 'localhost', 8765)
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
Ответ №1:
В документации для websockets.serve
говорится, что его первый аргумент ws_handler
:
ws_handler — это обработчик веб-сокета. Это должна быть сопрограмма, принимающая два аргумента: WebSocketServerProtocol и URI запроса.
В функции hello
второй аргумент не используется, но он должен принять аргумент, потому что аргумент будет отправлен ему с помощью websockets.serve
.
Комментарии:
1. Просто было неясно, какой тип переменной path был. Это кортеж? Или, возможно, у меня просто не было большого опыта работы с фреймворками, которые требуют, чтобы вызываемые функции имели переменные в своей подписи, которые функция фактически не использует.
2. В документе говорится, что это URI, поэтому я предполагаю, что это либо всего одна строка, либо
WebSocketURI
объект , который является именованным кортежем. Было бы лучше распечатать его и посмотреть, что получится 😉3. Хорошо, это имеет смысл. Я бы поддержал ваш ответ, но у меня нет репутации.