text: NG_DOCS={
    "sections": {
      "tutorials": "Tutorials",
      "api": "API Documentation",
      "demos": "Demos"
    },
    "pages": [
      {
        "section": "tutorials",
        "id": "index",
        "shortName": "index",
        "type": "overview",
        "moduleName": "index",
        "shortDescription": "Guide to SocketStream Documentation",
        "keywords": "__tip ability aborted accelerating access achieved action actions active add-on addition additional addy ajax alan alert allow allows alternatives amazing analysing analytics angular answer api apis app appear application applications appreciate appreciated approach approaches apps areas argument ashkenas asset assets assumption asynchronous authenticate authentication authors auto-restart automatically backbone backend baked banner barnes basic basics battle bazon behave best best-of-breed bi-directional big blazing-fast bloating blog box breed broken browser browsers bug build building builds bundled business call called calling care catered caution cd cdn cdns change changes changing channel channels chat choice choosing chrome client client-side clients cloud clunky code codebase coffeekup coffeescript combination coming command commands commercial commit common communication community compatible complexity comprehensive compressed config configure connect connection connections connects consider console constantly contact content-rich continue contributed contributions contributors convenience convention core couchdb craig create created creator credits css currently custom dahl dashboard data database db decided default define demand demo demos dependencies dependent depending deploy deployment derbyjs derived designing desktop details developer developers developing development differently directory display distributed documentation documented download driver eagle-eyed ease eases easily easy ec2 ecosystem effortless ember empty enable enabling encounter end-to-end engine engines enhance enhancements entire established events exactly example examples excellent exceptions expanding experiment exports extending external facebook fail failed fallback fallbacks faqs fast feature featured features feedback file find fine firefox firewall fit fixes flexibility flexible focus follow format formats formatters forthcoming framework frameworks francisco freenode frees front fully function future game games gazillion generate git github going google great group grow grunt grunt-cli guide guillermo hall hand handlers handling hard hardened header help helping heroku high-speed history hogan holowaychuk honoouring hook hook-in hookup hope host hosting htm html html5 htmlfile http ideal ideally ideas identity image improve improvements included includes including incoming increase indicates infoq initial inspiration install installed installing installs instantly instructions integrate integrated integrating intend interested interfaces internal internally introduce introduction invoke invoked invoking io ipads iphones irc isaac jade javascript jensen jeremy jordan jquery js jshint json-over-rpc jsonp-polling keen key kind krtconf latency lead learn level lib libraries license licensed lint linted linting lisbon list live ll local localhost location log logged logging logic logo london longer lot low-level maintained major making managed manager manner maximize md memory mess message messages messy meteor middleware mihai milford minkin minor mit mobile mock mode model models modern modular module modules mongodb monitoring months moving muir multiplayer multiple myoptionalpass naming native net node nodejitsu nodemon nodemonignore non-trivial notice november npm number october offer older online opinionated optimal optimization optional optionally options__ order org organize organizing original osmani overhead overview owen packages packing pain parts pass passionate paul perfect perfectly persistent personal pick pioneering pipe place plan platform plays plugin polling poor popup port portland practices pre-compiled pre-processors preserve private problems process processed processor production productivity project properly protocols provide providing pub publicly publish pubsub push pusher quality question rauch re-established reactive ready real realtime realtimeconf received recommended redis reduce released reload reloads repl request requests require requires res resize responder responders response responsive restart retrieval return returned rich robert roman routed router routing rpc running ryan sadly safari sake sales salvatore san sanfilippo save saved scalable scaling schlueter seamless seamlessly search second seconds send sends sensible seo september serialization serve server server-side servers session sessions set settings share side simple simply simulating single-page site slow small social socket socketio socketstream software solution sourceforge spaghetti special speed square squared squares ss stable stack start started starting static status sticky stock storage store stored streaming stylus sub-directories substack sudo support supported supports swap-out switch synching syncing synomymous talk task tasks tastes template templates terminal test testing tests thing things third-party time tj tools tour trading traditional transport transports true tutorials twitter type ui undefined unique update updated urls use-case user users validation vanilla var ve versions videos view visit visits walks warning warnings watching ways web website websocket websockets well-maintained whirl windows wondering work workers working works wrapper wrappers write writing written ws xhr-polling youtube zepto zeromq"
      },
      {
        "section": "tutorials",
        "id": "authentication",
        "shortName": "Authentication",
        "type": "overview",
        "moduleName": "Authentication",
        "shortDescription": "Authentication",
        "keywords": "access accesstoken accesstokensecret action actions add adding app append apps authenticate authenticated authenticates authenticating authentication backend best bodyparser browser callback calling change choice client closely code coming command connect connection console consumer consumerkey consumersecret contents control css current data database db define denied details docs don easily enter events everyauth example examples exports express facebook findorcreateuser follow full function geared getcurrentuser github goal host http https integrates internal jade john js ldap libraries libs listen ll load log logout lookup main manually middleware modules multi-page note notifies oauth object option output overview password popular prepend processing production publish real redirectpath register req request require res resource return route router rpc save saves screen_name second secret sending sends serve server service session set setuserid simple socketstream specific ss start started styl supply tempted testing third-party true tutorials twitter twitterusermetadata unique update updating url user userid username users var view visit ways website websocket websockets whilst"
      },
      {
        "section": "tutorials",
        "id": "client_side_code",
        "shortName": "Client-Side Code",
        "type": "overview",
        "moduleName": "Client-Side Code",
        "shortDescription": "Client-Side Code",
        "keywords": "ability absolutely access accessed add allowing allows alphanumerically amd amount app approaches as-is automatically aware awesome backbone background bear better boiler-plate brought browser browserify browserifyexcludepaths cache called calls case cases catch chaos choice clean client client-code client-side code coffee coming command common components connection console copy create created critical critically default define demand depend dependencies depends developer developers difference directores directory disable distinction doesn don easily ensure entry error established exactly example exceptions exclude excluded excluding executed exist expect experience explicitly export file files folder forget form functions future goal going great handle head history hopes https inbuilt info instantly internally javascript jquery js killing leading legacy libraries library libs lightweight list live lives ll load loading long magic major making manage managing manually md mess mind modification modify module modules namespacing node onus options order org overview packaging path paths performs point position problem problems project querystring reconnecting reference regular relative require required requires send serve served server server-side set share sharing side single slash small socketstream solution solutions solves special ss stack statement structure subdirectories substack syntax system top track treated tricky tutorials type typically underscore unique unstructured url values variable wade wanted web websocket window work works write writing"
      },
      {
        "section": "tutorials",
        "id": "client_side_templates",
        "shortName": "Client-Side Templates",
        "type": "overview",
        "moduleName": "Client-Side Templates",
        "shortDescription": "Client-Side Templates",
        "keywords": "accessible alice allowing allows angular apart app append argument astronomy bad bandwidth biology bob browser building built-in bundled called client client-side clients code coffeekup compiled construct convert correct create css data default define directories directory display div don dramatically easy ember engine engines enter example exiting extension external favorite file find flexibility folder format formatter functions generate github good happy html including inline iphone jade jquery js languages larger layoutless length lib library libs limit live ll logic main major manually match md mix mixing mobile model model-person module modules mustache npm number optional organizing out-of-the-box outputs overview pass passing people perfect person practice prefer prefix project raw ready recommended reduces refactoring refresh render required requires scale scope second send serve server serving simple simply single-page small socketstream solution source ss ss-hogan string student studies styl subdirectory suitable supported supports tag template templateengine templates templating time tmpl tmpl- tutorials types var view ways websocket wrappers wraps"
      },
      {
        "section": "tutorials",
        "id": "defining_multiple_clients",
        "shortName": "Defining Multiple Clients",
        "type": "overview",
        "moduleName": "Defining Multiple Clients",
        "shortDescription": "Defining Multiple Single-Page Clients",
        "keywords": "additional allows alphanumerically app application argument asset assets browser browsers calendar called changed choose choosing client client-side clients closely code combination command common config connection consist contents create css default define defined defining demand depending desktop devices directories directory divide duplicate easy example exclusively file files flexibility format framework function headers html http imagine imported individually initial interface iphone iphones jade js layout libraries libs list live lives ll long main match min mix mobile module modules mounted multiple names namespace nature nested note option options order overview pass passing plain power prefer project provide providing recommended require res reset root route sections send sending serve serveclient served serving settings shared sharing short single-page socketstream ss stored structure styl stylesheets stylus sub-directories template templates three tmpl tutorials type typical typically unique url urls user-agent useragent ve view"
      },
      {
        "section": "tutorials",
        "id": "http_middleware",
        "shortName": "HTTP Middleware",
        "type": "overview",
        "moduleName": "HTTP Middleware",
        "shortDescription": "HTTP Middleware",
        "keywords": "access accessible add address adds allows alternative apart app append appended appending asset assets avoid bodyparser bottom browser cache caches client clients compress connect cookieparser currently custom customisable days deprecated determining development directly eventmiddleware everyauth exactly example favicon file files find flag fs functions future http images instance internally issue js limit ll load loaded loading making maxage maxlength maxobjects middleware middlewares mode moment notice number objects options order overview pass passing prepend prepended prepending processed proxy readfile removed repeated req requests requires reverse running serve serving session sessions set settings single-page size slower socketstream ss stack static staticcache store storing support top tutorials upgrading variable varnish wanting warning work"
      },
      {
        "section": "tutorials",
        "id": "live_reload",
        "shortName": "Live Reloading",
        "type": "overview",
        "moduleName": "Live Reloading",
        "shortDescription": "Live Reloading of Client Files",
        "keywords": "add alternatively api app automatically breaks browser built call change client code conf continuous creates css cycle developer development differently directories directory disable doesn don editor emfile enabled error example expected false file files front-end fs higher inotify issue issues js life limit linux live ll log lose max_user_instances mention mode needed node nowritebackup observe open operating options os overview packassets place prevent problems production productivity real refreshing reload reloaded reloading replacing result screen set side soar socketstream ss stylesheets sudo sysctl system temporary text things top-level tutorials tweaking typically vi views vim watch web work works write"
      },
      {
        "section": "tutorials",
        "id": "loading_assets_on_demand",
        "shortName": "Loading Assets On Demand",
        "type": "overview",
        "moduleName": "Loading Assets On Demand",
        "shortDescription": "Loading Assets On Demand",
        "keywords": "additional allowing allows app application assets assume asynchronously automatic better blocking browser built-in caching call callback called client client-side code command contacting create default demand directly directory distinct example execute fancy file folder freeze function future good haven icloud ignore inside instantly js large ll load loaded loading module modules mount multiple namespace nature normal note overview pack requested requests require required retrieved returned root sadly safely sake search sections send server small socketstream ss sub-directories subsequent syntax tutorials var ve writing"
      },
      {
        "section": "tutorials",
        "id": "production_hosting",
        "shortName": "Production Hosting",
        "type": "overview",
        "moduleName": "Production Hosting",
        "shortDescription": "Production Hosting",
        "keywords": "activated adding allows alternatively altogether amazon app apps asset assets assigning automatically bear bit built-in cache call catch catching cdn change check checks client cloudfront clustering code coming command concatenated configure configured connection connections console correctly css custom default define defined deleted deploy deploying deployment descriptor descriptors development discover emailserveradmins ensure env environment error errors example exception exceptions exist existing feature file files fine force function future generated generates greatly gzip handle handling high hosting href html http improve include includes insert integrated js large launch libraries limit links linux ll loaded local locally logtodatabase low machine manager maximum media mind minified mode net node note notice number open optimal options org overview pack packassets packed packing pass path performance platform prefix preparing prevent print process processing production ram recommend rel remove repacking requests requires response result return running safety scaling screen served server servers serving set settings setup simulations site socketstream source spend src ss ss_env ss_pack start starts static stylesheet support terminating text things time times timestamp tips traffic tricks true tutorials type typical typically ulimit uncaught uncaughtexception unique updated urls users usual ve viewed websocket work write"
      },
      {
        "section": "tutorials",
        "id": "pub_sub_events",
        "shortName": "Pub/Sub Events",
        "type": "overview",
        "moduleName": "Pub/Sub Events",
        "shortDescription": "Pub/Sub Events",
        "keywords": "achieve actions add addressed alert allow allowing api app argument arguments array assign attached attribute automatically basically behavior benefit better broadcasting browser browsers call calling cases catch cb change channel channelname channels chat chatmessage client clients code command commands config connect connected console created current currently database default designed desired development devices directly disconnected disney driver easily emitter entire erlang errors event events example exist external file files final find fine flash format fred function future goal going ground handler high-throughput horizontal ids implemented implementing in-built includes individual instance internal invoke javascript jerry js json justforme key kids list ll load load-balanced log logged lost maintenance message messages messaging method middleware mind minutes moderate modular msg multiple names node note notice number object offer offline opens outgrows overview pass passed passing persist plan powerful prevent private process processes providing pub publish published publishing push queue queued rare re-connects re-subscribed real receive receiving recommend redis refresh reloads remember req reset retain rooms rpc scalability second send sending sends server server-side servers service session sessionid sessions setuserid share signs simple simply single socketid socketstream special specialoffer specific specifies ss ss-console stored storing subscribe subscribed subscriptions subsequent subset support switch system systems tab tabs time tom transport transports tutorials unaffected unlimited unsubscribe unsubscribes user userid users usual valid websocket works write"
      },
      {
        "section": "tutorials",
        "id": "request_middleware",
        "shortName": "Request Middleware",
        "type": "overview",
        "moduleName": "Request Middleware",
        "shortDescription": "Request Middleware",
        "keywords": "access action actions adding admin allowing allows altogether api app application arg argument arrive attach authorization authorized bear browser call called chain check checkauthenticated code color command concept conflicts connect console contents continuing created creating crud custom custom-defined cyan data database debug debugging define delete denied destination directly don drop easy ensure essentially example exciting executing experimenting exploring exports external familiar file files final finished folder food forward forwards function functions future handles highly http ideas incoming indicates indicating inspect instantly instructs internal internally invoked io js ll load loaded logged message middleware mind models module modules mongodb move multiple multiplier multiplies multiplynumber namespace note npm num number numbers object opportunities optional order output outputs overview param params pass passed perfect permits prevent problems proceeding processed processing provided publish recommend redirect remember repl req request requesting requests res respond retrieve return rpc sanitize scaling second server session sharing showresult simple simply socketstream square ss ss-console start step store strictly system takes terminal test text-utils third-party thought time today topsecret transform tree tutorials typeof typically update user userid var ve wait websocket write"
      },
      {
        "section": "tutorials",
        "id": "rpc_responder",
        "shortName": "RPC Websocket Responder",
        "type": "overview",
        "moduleName": "RPC Websocket Responder",
        "shortDescription": "RPC Server-side Websocket Responder",
        "keywords": "ability access action actions actual add adding alert allows api append args argument arguments array assume best bestsalesperson browser business calculations call callback called callsharedfunction choose client client-side command commands conjunction conn connection console create createconnection data db dell details directions directly doo electronics enddate error example expecting exports file follow function functions hood hp idiom internal intuitively ipad iphone js json latest lcd loads log logic main matched message messages method methods middleware module mongoose multiple mydb mymodule node node_module online overview param2 pass powerful printer procedure product products producttype recommend remember remote render requested require res responder response result return returning returns rpc salesperson scooby selling send sending serializes server server-side share shared sharedfunction sides ss store strictly string tmpl top topselling tree tutorials tv typically unlimited var websocket wire work write"
      },
      {
        "section": "tutorials",
        "id": "server_side_testing",
        "shortName": "Testing your app",
        "type": "overview",
        "moduleName": "Testing your app",
        "shortDescription": "Testing your app",
        "keywords": "actions add allow allows app array assert automatically brand calling calls choice combination commands compared complete considering convert create created describe directly directory equal example experimental exports feature file files framework function future github globally goal going grunt grunt-cli help implementing install instance javascript js json lines ll major memory mkdir mock module node node_modules note npm number output overview package params perfect problems publish recommend releases reporting req request require res responders response return rpc scripts server server-side session sessions socketstream square ss stage start started string subsequent test tested testing tests things time tostring transport tutorials typing unique userid var"
      },
      {
        "section": "tutorials",
        "id": "sessions",
        "shortName": "Sessions",
        "type": "overview",
        "moduleName": "Sessions",
        "shortDescription": "Sessions",
        "keywords": "accessed actions activate add allow api app append argument authentication auto-expiring automatically avoid backend browser bundled call calling cart checkout choice closes configuration connect connect-redis console contents custom data day days default developing easily ensure example excellent expire expiry exports express false file flexibility framework function getsession http in-memory internal js leaks ll load loaded log maxage memory middleware milliseconds myvar note optimum options overview page-based passed performing persistent processed production redis req request requests res retrieved return route router save saved second server session sessions set shared socketstream speed ss standard start store stores terminated testaction time tutorials updated updatesession user websocket websockets write"
      },
      {
        "section": "tutorials",
        "id": "template_engine_wrappers",
        "shortName": "Template Engine Wrappers",
        "type": "overview",
        "moduleName": "Template Engine Wrappers",
        "shortDescription": "Template Engine Wrappers",
        "keywords": "add app as-is attach automatically based bearing behavior best browser building bytes call called calls case catch client client-side clientcode closing code command compile compiled compiledtemplate compiling config consider console contents create default defaultformatter directly dot easy engine engines error example exports extension false file files find folder formatter formatters fs function functions github good guides handles hasownproperty hogan hogan-template ht html idea include init inside jade join js key language large lib library loads log map message mind module modules needed occasionally opening overview overwrite party pass passing path performance pick points pre-compile pre-processing preferred prefix process prototype prove readfilesync ready red reference relative render require return returns selectformatter selecting selects send sending server side simply socketstream ss suffix supports tag template templates templating text third throw time tips tmpl trade transform transforming true tutorials twitter type uncommon utf8 var variety vm wide wire wrap wrapper wrappers written"
      },
      {
        "section": "tutorials",
        "id": "using_emberjs",
        "shortName": "Use Ember JS",
        "type": "overview",
        "moduleName": "Use Ember JS",
        "shortDescription": "Use Ember JS",
        "keywords": "add allaredone app application appreciated array arraycontroller backend bound browser capabilities checkbox clearcompletedtodos client code collection configuration content contentbinding contributed controller copy core create created creates createtodo createtodoview crossroads css data declared define defined defining described directly directory display doc dom downloaded early easy editing elements em ember enable end-point engine ensure event everyproperty example extend file filterproperty finally foreach framework function google group handlebar handler handlers head hold holds html http improve info insertnewline integrate isdone item itemclassbinding items jquery js kindly length lib libraries libs limit list load loaded loading min model mvc new-todo newly note order overview parsed path placeholder point properly property pull ready removeobject rendered requests require res retrieve return route router routing rpc scripts seamlessly second serveclient seteach simple socketstream ss steps support tagname tags template templateengine templates textfield title titlebinding tmpl todo todos todoscontroller true tutorials ul undefined usual valuebinding variables view views website window wiring works"
      },
      {
        "section": "tutorials",
        "id": "web_workers",
        "shortName": "Web Workers",
        "type": "overview",
        "moduleName": "Web Workers",
        "shortDescription": "Web Workers",
        "keywords": "addeventlistener automatic basic blocking browser browsers caching calculate calculatepi calculating calculations call client client-side code coffee coffeescript compilation complex console create cycles data default don easy example execute experiment false file folder formula function general great html5rocks http installed invoke javascript js live ll load log main message messages minification modern module numbers org output overview packassets passing pi postmessage print provide providing read result return running seconds separate socketstream ss ss-coffee start started task tasks thread transparent tutorial tutorials var web wikipedia work worker workers written"
      },
      {
        "section": "tutorials",
        "id": "writing_request_responders",
        "shortName": "Custom Request Responder",
        "type": "overview",
        "moduleName": "Custom Request Responder",
        "shortDescription": "Custom Request Responder",
        "keywords": "access action add adding additional aimed allow allowing allows annotated api apitree app appending application applications arbitrary argument arguments assigned assuming async automatically backbone basic basically best bi-directional browser build built-in bundled byte bytes calculate call callback callbacks called case channel character choice choose clicks client client-side clone code combination comfortable commas complete complex concepts config connection conscious continually control coordinate core create creating custom data default define defined desire destined develop developer developers digits directions directly documentation easier easily echo efficient ember encountered entirely errors event events exactly example experiment experimental explore extend external feature fewer files find flexibility flowing format freenode function functionally future gaming git github going groups handler handles heartbeat help hesitate high-speed http https ideas implement implementing incoming increase info inspiration interfaces internal introduction investigate invoked io irc issue javascript js json json-serialized left length libraries ll load loaded log lot low-bandwidth main message messages method middleware mode model models module modules mongodb-esq mouse movements moving namespacing node non-blocking note notice npm number numeric object objects online optional org outgoing overhead overview packet-sniff packing param1 param2 pass passed passing persistent pick pipe prepended presence process production protocol pub publish receives recommend register registerapi registering regular repl request requests responder responderid responders result rpc rpc-style runs schema second send sending sends separated sequential serialization serialize server server-side simple simply socket socketstream source ss ss-console ss-echo-responder stable stack stage started status store streaming streams string strings suite support synching takes test third-party time touch transforms transports tutorials types typical ultimate ultra ultra-simple unique unlimited user users ve versa vice view virtual ways website websocket wire world write writing zeromq"
      },
      {
        "section": "api",
        "id": "http.index:index",
        "shortName": "index",
        "type": "service",
        "moduleName": "http",
        "shortDescription": "HTTP Server",
        "keywords": "api app application assets attached callback concern connect css expose fn function http instance js load merge middleware newsettings object optional options path res route routing serveclient server servers service serving session sessionoptions sessionstore set settings settins short-form simply socketstream stack static staticcache staticpath store string updated url var web wishes"
      },
      {
        "section": "api",
        "id": "http.router:router",
        "shortName": "router",
        "type": "service",
        "moduleName": "http",
        "shortDescription": "Right now the router is simply an EventEmitter. This may change in the future",
        "keywords": "allows api callback cb change clients ee eventemitter exists fall find fully function future html5 http instance mock multiple object original passed pushstate recursively req request res respond route router routing service simply single-page speed support url"
      },
      {
        "section": "api",
        "id": "utils",
        "shortName": "utils",
        "type": "service",
        "moduleName": "utils",
        "shortDescription": "Contains utils modules for working with file system and some additional helpers",
        "keywords": "additional api file helpers modules service system utils working"
      },
      {
        "section": "api",
        "id": "utils.file:file",
        "shortName": "file",
        "type": "service",
        "moduleName": "utils",
        "shortDescription": "This is used to maintain lists of userIds to socketIds and channelIds to socketIds",
        "keywords": "absolute adapted api array basename basepath channelids contents css dir directory dorectory eror extension file filepath files find findextforbase findextforbasepath github givven https isdir jade json lists loadpackagejson loads lookup maintain matching mode null object package parse path readdirsync reads returns root service socketids socketstream start synchronous thorws true unable userids utils views"
      },
      {
        "section": "api",
        "id": "utils.log:log",
        "shortName": "log",
        "type": "service",
        "moduleName": "utils",
        "shortDescription": "Contains method stubs for logging",
        "keywords": "api assigning choose console debug default error fairly function happened info informed keeping level log logging method override parameters provider require service socketstream ss stubs sysadmin takes time trivial unexpected utils var wakeup warn winston"
      },
      {
        "section": "api",
        "id": "utils.misc:misc",
        "shortName": "misc",
        "type": "service",
        "moduleName": "utils",
        "shortDescription": "Module contains misc methods",
        "keywords": "adapted api args arguments array body broofa contents declaring default defaults expected extend extended http incoming js len length message messages methods misc module msg obj object parameter parse parsewsmessage randomstring service string type underscore utils uuid websocket"
      },
      {
        "section": "api",
        "id": "utils.unique_set:UniqueSet",
        "shortName": "UniqueSet",
        "type": "service",
        "moduleName": "utils",
        "shortDescription": "This is used to maintain lists of userIds to socketIds and channelIds to socketIds",
        "keywords": "accotding add api array assigned channelids key link lists maintain members names removal remove removefromall returns service set sets socketids specific status unique_set uniqueset userids utils values"
      },
      {
        "section": "demos",
        "id": "index",
        "shortName": "index",
        "type": "overview",
        "moduleName": "index",
        "shortDescription": "Demos",
        "keywords": "demo demos http official org overview project socketstream"
      }
    ],
    "apis": {
      "tutorials": false,
      "api": true,
      "demos": false
    },
    "html5Mode": false,
    "startPage": "tutorials",
    "discussions": {
      "shortName": "socketstream",
      "url": "http://romanminkin.github.io/socketstream/docs/",
      "dev": true
    },
    "scripts": [
      "angular.min.js"
    ]
  };
  