A coroutine is a generator that follows certain conventions in asyncio. See asyncio docs.
synchronized coroutine
A coroutine that has been wrapped or decorated by synchronize() so that it can be executed without using yield from in a child greenlet. Synchronized coroutines are used to bridge the gap between framework code which expects normal Python functions and application code that uses coroutines.
WebSocket is a protocol providing full-duplex communications channels over a single TCP connection. See websockets for a simple python library to get started.