Acting Natural
At this point we have a reasonably full-featured chat application. You can log in and chat with as many users as you like, and messages are sent around in realtime, but the experience is not quite complete. After a user sends a message to another user, there isn’t a lot of feedback about what is happening. Users of modern chat applications expect to be informed about what the other user is doing. Is the user typing? Did the user start typing and stop? Is this person still online? These are the types of features that change a standard chat script into a living, breathing realtime application. Luckily, with the code that’s already written, these features are easy to implement.

Figure 6-4. A sample chat session in multiple browser windows
When the ability to see that a user is typing was introduced into chat applications, it seemed like a little thing. But after using this feature for even a short amount of time, it became hard to remember how chatting worked without it. To enable it in this application, it’s going to take a mixture of both Python and JavaScript. In the chat-server.py file, add a new URL handler to deal with typing messages:
class Application(tornado.web.Application):
handlers = [
(r"/", MainHandler),
(r"/login/?", LoginHandler),
(r"/updates/?", UpdateHandler),
(r"/send/?", SendHandler),
(r"/typing/?", TypingHandler),
]This will route any requests for the ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access