Created
May 26, 2011 08:05
-
-
Save fabware/992750 to your computer and use it in GitHub Desktop.
tornadio crash tornado iostream
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- coding: utf-8 -*- | |
import os | |
import tornado | |
import tornadio | |
from handlers import PostMessageHandler, MessageConnection | |
import settings | |
MessageRouter = tornadio.get_router(MessageConnection, resource='message/*', extra_re='\d+', extra_sep='/') | |
print os.path.join(settings.TEMPLATE_PATH, 'flashpolicy.xml') | |
application = tornado.web.Application( | |
[(r'/post/(\d+)/', PostMessageHandler), | |
MessageRouter.route() | |
], | |
enabled_protocols = ['websocket', 'flashsocket', 'xhr-multipart', 'xhr-polling'], | |
flash_policy_port = 843, | |
flash_policy_file = os.path.join(settings.TEMPLATE_PATH, 'flashpolicy.xml'), | |
socket_io_port = 40000 | |
) | |
if __name__ == '__main__': | |
import logging | |
logging.getLogger().setLevel(logging.DEBUG) | |
tornadio.server.SocketServer(application) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- coding: utf-8 -*- | |
import tornado | |
import tornadio | |
import tornadio.router | |
import tornadio.server | |
class ListenerContainer(): | |
def __init__(self): | |
self.users = {} | |
def add(self, listener): | |
self.users[listener.user_id] = listener | |
def remove(self, listener): | |
if listener.user_id in self.users: | |
del self.users[listener.user_id] | |
def get_user_listener(self, user_id): | |
return self.users.get(user_id, None) | |
container = ListenerContainer() | |
class PostMessageHandler(tornado.web.RequestHandler): | |
def post(self, user_id): | |
msg = self.get_argument('msg') | |
print container.users | |
listener = container.get_user_listener(user_id) | |
if listener: | |
listener.send(msg) | |
self.write('true') | |
else: | |
self.write('false') | |
return self.finish() | |
class MessageConnection(tornadio.SocketConnection): | |
def on_open(self, *args, **kwargs): | |
print args, kwargs | |
self.user_id = kwargs['extra'] | |
if self.user_id: | |
container.add(self) | |
print 'current users:', container.users | |
def on_message(self, message, *args, **kwargs): | |
pass | |
def on_close(self): | |
container.remove(self) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment