2016-10-06 2 views
0

Из примера здесь: http://websockets.readthedocs.io/en/stable/intro.htmlРазъяснения на примере питона WebSockets

Может кто-то объяснить, что делает здесь параметр «путь»? Это кортеж для хоста и порта, необходимых 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() 

ответ

0

The documentation for websockets.serve говорит, что ее первый аргумент ws_handler:

ws_handler является обработчиком WebSocket. Это должна быть сопрограмма, принимающая два аргумента: WebSocketServerProtocol и URI запроса.

В функции hello, то второй аргумент не используется, но он должен принять аргумент, потому что аргумент будет отправлено на него websockets.serve.

+0

Просто неясно, какой тип переменного пути был. Это кортеж? Или, возможно, я просто не имел большого опыта работы с фреймворками, которые требуют, чтобы вызываемые функции имели переменные в своей сигнатуре, которые функция фактически не использует. –

+0

В документе говорится, что это URI, поэтому я думаю, что это либо одна строка, либо объект '' WebSocketURI' (http://websockets.readthedocs.io/en/stable/_modules/websockets/uri.html ? highlight = WebSocketURI), который является именованным кортежем. Лучше всего распечатать его и посмотреть, что получится;) – zvone

+0

Хорошо, это имеет смысл. Я бы поднял ваш ответ, но у меня нет репутации. –

Смежные вопросы