Skip to content

Instantly share code, notes, and snippets.

@longhero3
Created June 30, 2013 17:15
Show Gist options
  • Save longhero3/5896012 to your computer and use it in GitHub Desktop.
Save longhero3/5896012 to your computer and use it in GitHub Desktop.
import tornado.ioloop
import tornado.web
import json
import os
serverdir = os.path.dirname(os.path.realpath(__file__))
rootdir = os.path.abspath(os.path.join(serverdir, os.pardir))
clientdir = os.path.join(rootdir, "client")
class HandlerMixin(object):
listeners = []
def add_listener(self, callback):
handler = HandlerMixin()
handler.listeners.append(callback)
print('Total listeners: %i' % len(handler.listeners))
def send_message(self, message):
handler = HandlerMixin
print('Sending messages to %i listeners' % len(handler.listeners))
for listener in handler.listeners:
listener(message)
handler.listeners =[]
class MainHandler(tornado.web.RequestHandler,HandlerMixin):
@tornado.web.asynchronous
def get(self):
self.render(clientdir +"/chatindex.html")
self.add_listener(self.async_callback(self._callback))
def post(self):
message=self.get_argument('chattext', None)
print('Message:%s' % message)
self.send_message(message)
def _callback(self, message):
if self.request.connection.stream.closed():
return
self.finish(message)
class Application(tornado.web.Application):
def __init__(self):
handlers = [
(r"/", MainHandler),
]
settings = dict(
autoescape=None,
)
tornado.web.Application.__init__(self, handlers, **settings)
if __name__ == "__main__":
application = Application()
application.listen(34543)
tornado.ioloop.IOLoop.instance().start()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment