示例#1
0
    def test_gc_thread(self):
        from pyramid_sockjs.session import SessionManager

        sm = SessionManager('sm', self.registry, gc_cycle=0.1)
        sm.start()
        sm.stop()
示例#2
0
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)
示例#3
0
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 test_gc_thread(self):
        from pyramid_sockjs.session import SessionManager

        sm = SessionManager('sm', self.registry, gc_cycle=0.1)
        sm.start()
        sm.stop()
示例#6
0
    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', ())