Skip to content

Instantly share code, notes, and snippets.

@fabware
Created May 26, 2011 08:05
Show Gist options
  • Save fabware/992750 to your computer and use it in GitHub Desktop.
Save fabware/992750 to your computer and use it in GitHub Desktop.
tornadio crash tornado iostream
# -*- 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)
# -*- 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