import tornado.ioloop import tornado.web import random from tornado.web import HTTPError, RequestHandler, Application, StaticFileHandler from tornadio2 import SocketConnection, TornadioRouter, SocketServer, event words = [ 'dog', 'cat', 'fish', 'antelope' ] class SpellerConnection(SocketConnection): @event def word(self, original=None, attempt=None): if original is not None: self.emit('attempt', {"result": check_word(original, attempt)}) self.emit('new word', {"word": words[random.randrange(len(words))]}) def check_word(original, attempt): # TODO: fun stuff here return original == attempt class IndexHandler(RequestHandler): def get(self): self.render("static/index.html") class SocketIOHandler(RequestHandler): def get(self): self.render("static/socket.io.js") Router = TornadioRouter(SpellerConnection) sio_application = Application( Router.apply_routes([]), socket_io_port = 8001 ) web_application = Application([ (r"/", IndexHandler), (r"/socket.io.js", SocketIOHandler), (r"/(.*)", StaticFileHandler, {"path": "static"}) ]) if __name__ == "__main__": import logging logging.getLogger().setLevel(logging.DEBUG) SocketServer(sio_application, auto_start=False) web_application.listen(8888) tornado.ioloop.IOLoop.instance().start()