def test_gc_thread(self): from pyramid_sockjs.session import SessionManager sm = SessionManager('sm', self.registry, gc_cycle=0.1) sm.start() sm.stop()
def add_sockjs_route(cfg, name='', prefix='/__sockjs__', session=None, session_manager=None, disable_transports=(), sockjs_cdn='http://cdn.sockjs.org/sockjs-0.3.4.min.js', permission=None, decorator=None, cookie_needed=True, per_user=True): # set session manager if session_manager is None: session_manager = SessionManager(name, cfg.registry, session=session) if session_manager.name != name: raise ConfigurationError( "Session manage has to have same name as sockjs route") if not hasattr(cfg.registry, '__sockjs_managers__'): cfg.registry.__sockjs_managers__ = {} if name in cfg.registry.__sockjs_managers__: raise ConfigurationError("SockJS '%s' route already registered" % name) cfg.registry.__sockjs_managers__[name] = session_manager # register routes sockjs = SockJSRoute(name, session_manager, sockjs_cdn, disable_transports, cookie_needed, per_user) if prefix.endswith('/'): prefix = prefix[:-1] route_name = 'sockjs-url-%s-greeting' % name cfg.add_route(route_name, prefix) cfg.add_view(route_name=route_name, view=sockjs.greeting, permission=permission, decorator=decorator) route_name = 'sockjs-url-%s' % name cfg.add_route(route_name, '%s/' % prefix) cfg.add_view(route_name=route_name, view=sockjs.greeting, permission=permission, decorator=decorator) route_name = 'sockjs-%s' % name cfg.add_route(route_name, '%s/{server}/{session}/{transport}' % prefix) cfg.add_view(route_name=route_name, view=sockjs.handler, permission=permission, decorator=decorator) route_name = 'sockjs-websocket-%s' % name cfg.add_route(route_name, '%s/websocket' % prefix) cfg.add_view(route_name=route_name, view=sockjs.websocket, permission=permission, decorator=decorator) route_name = 'sockjs-info-%s' % name cfg.add_route(route_name, '%s/info' % prefix) cfg.add_view(route_name=route_name, view=sockjs.info, permission=permission, decorator=decorator) route_name = 'sockjs-iframe-%s' % name cfg.add_route(route_name, '%s/iframe.html' % prefix) cfg.add_view(route_name=route_name, view=sockjs.iframe, permission=permission, decorator=decorator) route_name = 'sockjs-iframe-ver-%s' % name cfg.add_route(route_name, '%s/iframe{version}.html' % prefix) cfg.add_view(route_name=route_name, view=sockjs.iframe, permission=permission, decorator=decorator) # start session gc cfg.action('pyramid_sockjs:gc:%s' % name, session_manager.start, order=999999 + 1)
def add_sockjs_route(cfg, name='', prefix='/__sockjs__', session=None, session_manager=None, disable_transports=(), sockjs_cdn='http://cdn.sockjs.org/sockjs-0.2.0.min.js', permission=None, decorator=None, cookie_needed=True): # set session manager if session_manager is None: session_manager = SessionManager(name, cfg.registry, session=session) if session_manager.name != name: raise ConfigurationError( "Session manage has to have same name as sockjs route") if not hasattr(cfg.registry, '__sockjs_managers__'): cfg.registry.__sockjs_managers__ = {} if name in cfg.registry.__sockjs_managers__: raise ConfigurationError("SockJS '%s' route already registered"%name) cfg.registry.__sockjs_managers__[name] = session_manager # start gc session_manager.start() # register routes sockjs = SockJSRoute( name, session_manager, sockjs_cdn, disable_transports, cookie_needed) if prefix.endswith('/'): prefix = prefix[:-1] route_name = 'sockjs-url-%s-greeting'%name cfg.add_route(route_name, prefix) cfg.add_view(route_name=route_name, view=sockjs.greeting, permission=permission, decorator=decorator) route_name = 'sockjs-url-%s'%name cfg.add_route(route_name, '%s/'%prefix) cfg.add_view(route_name=route_name, view=sockjs.greeting, permission=permission, decorator=decorator) route_name = 'sockjs-%s'%name cfg.add_route(route_name, '%s/{server}/{session}/{transport}'%prefix) cfg.add_view(route_name=route_name, view=sockjs.handler, permission=permission, decorator=decorator) route_name = 'sockjs-websocket-%s'%name cfg.add_route(route_name, '%s/websocket'%prefix) cfg.add_view(route_name=route_name, view=sockjs.websocket, permission=permission, decorator=decorator) route_name = 'sockjs-info-%s'%name cfg.add_route(route_name, '%s/info'%prefix) cfg.add_view(route_name=route_name, view=sockjs.info, permission=permission, decorator=decorator) route_name = 'sockjs-iframe-%s'%name cfg.add_route(route_name, '%s/iframe.html'%prefix) cfg.add_view(route_name=route_name, view=sockjs.iframe, permission=permission, decorator=decorator) route_name = 'sockjs-iframe-ver-%s'%name cfg.add_route(route_name, '%s/iframe{version}.html'%prefix) cfg.add_view(route_name=route_name, view=sockjs.iframe, permission=permission, decorator=decorator)
def make_one(self): from pyramid_sockjs.session import Session, SessionManager return Session, SessionManager('sm', self.registry)
def make_one(self): from pyramid_sockjs.route import SockJSRoute from pyramid_sockjs.session import SessionManager sm = SessionManager('sm', self.registry) return SockJSRoute('sm', sm, 'http:sockjs-cdn', ())