Я использую библиотеку websockets
для создания сервера websocket в Python 3.4. Здесь простой сервер эха:
import asyncio
import websockets
@asyncio.coroutine
def connection_handler(websocket, path):
while True:
msg = yield from websocket.recv()
if msg is None: # connection lost
break
yield from websocket.send(msg)
start_server = websockets.serve(connection_handler, 'localhost', 8000)
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
Скажем, мы - дополнительно - хотели отправить сообщение клиенту всякий раз, когда происходит какое-то событие. Для простоты отправьте сообщение каждые 60 секунд. Как мы это сделаем? Я имею в виду, потому что connection_handler
постоянно ждет входящих сообщений, сервер может действовать только после того, как он получил сообщение от клиента, верно? Что мне здесь не хватает?
Возможно, для этого сценария необходима структура, основанная на событиях/обратных вызовах, а не на основе сопрограмм? Tornado?