A low-level event-driven chat server
So the event-driven architecture has a few great benefits, the catch is that for a low-level implementation, we need to write our code in a completely different style. Let's write an event-driven chat server to illustrate this.
Note that this example will not at all work on Windows as Windows lacks the poll
interface which we will be employing here. There is an older interface, called select
, which Windows does support, however it is slower and more complicated to work with. The event-driven frameworks that we look at later do automatically switch to select
for us though, if we're running on Windows.
There is a higher performance alternative to poll
called epoll
, available on Linux operating systems, however it also more complicated to use, so for simplicity we'll stick with poll
here. Again, the frameworks we discuss later automatically take advantage of epoll
if it is available.
Finally, counter-intuitively, Python's poll
interface lives in a module called...