{"id":13440117,"url":"https://github.com/wandenberg/nginx-push-stream-module","last_synced_at":"2025-05-14T14:08:14.608Z","repository":{"id":1122011,"uuid":"994615","full_name":"wandenberg/nginx-push-stream-module","owner":"wandenberg","description":"A pure stream http push technology for your Nginx setup. Comet made easy and really scalable.","archived":false,"fork":false,"pushed_at":"2024-08-19T19:17:35.000Z","size":1812,"stargazers_count":2229,"open_issues_count":15,"forks_count":296,"subscribers_count":126,"default_branch":"master","last_synced_at":"2025-04-09T03:11:38.891Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wandenberg.png","metadata":{"files":{"readme":"README.textile","changelog":"CHANGELOG.textile","contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2010-10-17T14:26:27.000Z","updated_at":"2025-04-08T21:19:47.000Z","dependencies_parsed_at":"2023-07-05T19:48:32.975Z","dependency_job_id":"fbf95a2d-6202-41db-a69a-57de8b7fade2","html_url":"https://github.com/wandenberg/nginx-push-stream-module","commit_stats":{"total_commits":497,"total_committers":14,"mean_commits":35.5,"dds":"0.10261569416498995","last_synced_commit":"8c02220d484d7848bc8e3a6d9b1c616987e86f66"},"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wandenberg%2Fnginx-push-stream-module","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wandenberg%2Fnginx-push-stream-module/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wandenberg%2Fnginx-push-stream-module/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wandenberg%2Fnginx-push-stream-module/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wandenberg","download_url":"https://codeload.github.com/wandenberg/nginx-push-stream-module/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254159700,"owners_count":22024564,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T03:01:19.928Z","updated_at":"2025-05-14T14:08:14.581Z","avatar_url":"https://github.com/wandenberg.png","language":"C","funding_links":["https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=4LP6P9A7BC37S"],"categories":["C","Third Modules","Third Party Modules","Streaming, media and image processing"],"sub_categories":["C Modules"],"readme":"h1(#nginx_push_stream_module). Nginx Push Stream Module\n\nA pure stream http push technology for your Nginx setup.\n\n\"Comet\":comet_ref made easy and *really scalable*.\n\nSupports \"EventSource\":eventsource_ref, \"WebSocket\":websocket_ref, Long Polling, and Forever Iframe. See \"some examples\":examples bellow.\n\n_This module is not distributed with the Nginx source. See \"the installation instructions\":installation._\n\nAvailable on github at \"nginx_push_stream_module\":repository\n\nh1(#changelog). Changelog\n\nAlways take a look at \"CHANGELOG.textile\":changelog to see what's new.\n\n\nh1(#contribute). Contribute\n\nAfter you try this module and like it, feel free to \"give something back\":donate, and help in the maintenance of the project ;)\n!https://www.paypalobjects.com/WEBSCR-640-20110429-1/en_US/i/btn/btn_donate_LG.gif!:donate\n\nh1(#status). Status\n\nThis module is considered production ready.\n\nh1(#basic-configuration). Basic Configuration\n\n\u003cpre\u003e\n    # add the push_stream_shared_memory_size to your http context\n    http {\n       push_stream_shared_memory_size 32M;\n\n        # define publisher and subscriber endpoints in your server context\n        server {\n           location /channels-stats {\n                # activate channels statistics mode for this location\n                push_stream_channels_statistics;\n\n                # query string based channel id\n                push_stream_channels_path               $arg_id;\n            }\n\n            location /pub {\n               # activate publisher (admin) mode for this location\n               push_stream_publisher admin;\n\n                # query string based channel id\n                push_stream_channels_path               $arg_id;\n            }\n\n            location ~ /sub/(.*) {\n                # activate subscriber (streaming) mode for this location\n                push_stream_subscriber;\n\n                # positional channel path\n                push_stream_channels_path                   $1;\n            }\n        }\n    }\n\u003c/pre\u003e\n\n\nh1(#basic-usage). Basic Usage\n\nYou can feel the flavor right now at the command line. Try using more than\none terminal and start playing http pubsub:\n\n\u003cpre\u003e\n    # Subs\n    curl -s -v --no-buffer 'http://localhost/sub/my_channel_1'\n    curl -s -v --no-buffer 'http://localhost/sub/your_channel_1'\n    curl -s -v --no-buffer 'http://localhost/sub/your_channel_2'\n\n    # Pubs\n    curl -s -v -X POST 'http://localhost/pub?id=my_channel_1' -d 'Hello World!'\n    curl -s -v -X POST 'http://localhost/pub?id=your_channel_1' -d 'Hi everybody!'\n    curl -s -v -X POST 'http://localhost/pub?id=your_channel_2' -d 'Goodbye!'\n\n    # Channels Stats for publisher (json format)\n    curl -s -v 'http://localhost/pub?id=my_channel_1'\n\n    # All Channels Stats summarized (json format)\n    curl -s -v 'http://localhost/channels-stats'\n\n    # All Channels Stats detailed (json format)\n    curl -s -v 'http://localhost/channels-stats?id=ALL'\n\n    # Prefixed Channels Stats detailed (json format)\n    curl -s -v 'http://localhost/channels-stats?id=your_channel_*'\n\n    # Channels Stats (json format)\n    curl -s -v 'http://localhost/channels-stats?id=my_channel_1'\n\n    # Delete Channels\n    curl -s -v -X DELETE 'http://localhost/pub?id=my_channel_1'\n\u003c/pre\u003e\n\n\nh1(#examples). Some Examples \u003ca name=\"examples\" href=\"#\"\u003e\u0026nbsp;\u003c/a\u003e\n\n* \"Curl examples\":curl\n* \"Forever (hidden) iFrame\":forever_iframe\n* \"Event Source\":event_source\n* \"WebSocket\":websocket\n* \"Long Polling\":long_polling\n* \"JSONP\":jsonp\n* \"M-JPEG\":m-jpeg\n* \"Other examples\":wiki\n\n\nh1(#FAQ). FAQ \u003ca names=\"faq\" href=\"#\"\u003e\u0026nbsp;\u003c/a\u003e\n\nDoubts?! Check the \"FAQ\":wiki.\n\nh1(#bug_report). Bug report \u003ca name=\"bug_report\" href=\"#\"\u003e\u0026nbsp;\u003c/a\u003e\n\nTo report a bug, please provide the following information when applicable\n\n# Which push stream module version is been used (commit sha1)?\n# Which nginx version is been used?\n# Nginx configuration in use\n# \"nginx -V\" command outuput\n# Core dump indicating a failure on the module code. Check \"here\":nginx_debugging how to produce one.\n# Step by step description to reproduce the error.\n\nh1(#who). Who is using the module? \u003ca names=\"faq\" href=\"#\"\u003e\u0026nbsp;\u003c/a\u003e\n\nDo you use this module? Put your name on the \"list\":wiki.\n\n\nh1(#javascript_client). Javascript Client \u003ca name=\"javascript_client\" href=\"#\"\u003e\u0026nbsp;\u003c/a\u003e\n\nThere is a javascript client implementation \"here\":javascript_client, which is framework independent. Try and help improve it. ;)\n\nh1(#directives). Directives\n\n(1) Defining locations, (2) Main configuration, (3) Subscribers configuration, (4) Publishers configuration, (5) Channels Statistics configuration, (6) WebSocket configuration\n\n(head). | Directive | (1) | (2) | (3) | (4) | (5) | (6) |\n| \"push_stream_channels_statistics\":push_stream_channels_statistics | \u0026nbsp;\u0026nbsp;x | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- |\n| \"push_stream_publisher\":push_stream_publisher | \u0026nbsp;\u0026nbsp;x | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- |\n| \"push_stream_subscriber\":push_stream_subscriber | \u0026nbsp;\u0026nbsp;x | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- |\n| \"push_stream_shared_memory_size\":push_stream_shared_memory_size | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- |\n| \"push_stream_channel_deleted_message_text\":push_stream_channel_deleted_message_text | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- |\n| \"push_stream_channel_inactivity_time\":push_stream_channel_inactivity_time | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- |\n| \"push_stream_ping_message_text\":push_stream_ping_message_text | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- |\n| \"push_stream_timeout_with_body\":push_stream_timeout_with_body | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- |\n| \"push_stream_message_ttl\":push_stream_message_ttl | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- |\n| \"push_stream_max_subscribers_per_channel\":push_stream_max_subscribers_per_channel | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- |\n| \"push_stream_max_messages_stored_per_channel\":push_stream_max_messages_stored_per_channel | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- |\n| \"push_stream_max_channel_id_length\":push_stream_max_channel_id_length | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- |\n| \"push_stream_max_number_of_channels\":push_stream_max_number_of_channels | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- |\n| \"push_stream_max_number_of_wildcard_channels\":push_stream_max_number_of_wildcard_channels | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- |\n| \"push_stream_wildcard_channel_prefix\":push_stream_wildcard_channel_prefix | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- |\n| \"push_stream_events_channel_id\":push_stream_events_channel_id | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- |\n| \"push_stream_channels_path\":push_stream_channels_path | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x | \u0026nbsp;\u0026nbsp;x | \u0026nbsp;\u0026nbsp;x | \u0026nbsp;\u0026nbsp;x |\n| \"push_stream_store_messages\":push_stream_store_messages | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x |\n| \"push_stream_channel_info_on_publish\":push_stream_channel_info_on_publish | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- |\n| \"push_stream_authorized_channels_only\":push_stream_authorized_channels_only | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x |\n| \"push_stream_header_template_file\":push_stream_header_template_file | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x |\n| \"push_stream_header_template\":push_stream_header_template | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x |\n| \"push_stream_message_template\":push_stream_message_template | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x |\n| \"push_stream_footer_template\":push_stream_footer_template | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x |\n| \"push_stream_wildcard_channel_max_qtd\":push_stream_wildcard_channel_max_qtd | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x |\n| \"push_stream_ping_message_interval\":push_stream_ping_message_interval | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x |\n| \"push_stream_subscriber_connection_ttl\":push_stream_subscriber_connection_ttl | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x |\n| \"push_stream_longpolling_connection_ttl\":push_stream_longpolling_connection_ttl | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- |\n| \"push_stream_websocket_allow_publish\":push_stream_websocket_allow_publish | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x |\n| \"push_stream_last_received_message_time\":push_stream_last_received_message_time | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- |\n| \"push_stream_last_received_message_tag\":push_stream_last_received_message_tag | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- |\n| \"push_stream_last_event_id\":push_stream_last_event_id | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- |\n| \"push_stream_user_agent\":push_stream_user_agent | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- |\n| \"push_stream_padding_by_user_agent\":push_stream_padding_by_user_agent | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- |\n| \"push_stream_allowed_origins\":push_stream_allowed_origins | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- |\n| \"push_stream_allow_connections_to_events_channel\":push_stream_allow_connections_to_events_channel | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;- | \u0026nbsp;\u0026nbsp;x |\n\nh1(#installation). Installation \u003ca name=\"installation\" href=\"#\"\u003e\u0026nbsp;\u003c/a\u003e\n\n\u003cpre\u003e\n    # clone the project\n    git clone https://github.com/wandenberg/nginx-push-stream-module.git\n    NGINX_PUSH_STREAM_MODULE_PATH=$PWD/nginx-push-stream-module\n\n    # get desired nginx version (works with 1.2.0+)\n    wget http://nginx.org/download/nginx-1.2.0.tar.gz\n\n    # unpack, configure and build\n    tar xzvf nginx-1.2.0.tar.gz\n    cd nginx-1.2.0\n    ./configure --add-module=../nginx-push-stream-module\n    make\n\n    # install and finish\n    sudo make install\n\n    # check\n    sudo /usr/local/nginx/sbin/nginx -v\n        nginx version: nginx/1.2.0\n\n    # test configuration\n    sudo /usr/local/nginx/sbin/nginx -c $NGINX_PUSH_STREAM_MODULE_PATH/misc/nginx.conf -t\n        the configuration file $NGINX_PUSH_STREAM_MODULE_PATH/misc/nginx.conf syntax is ok\n        configuration file $NGINX_PUSH_STREAM_MODULE_PATH/misc/nginx.conf test is successful\n\n    # run\n    sudo /usr/local/nginx/sbin/nginx -c $NGINX_PUSH_STREAM_MODULE_PATH/misc/nginx.conf\n\u003c/pre\u003e\n\nh1(#memory-usage). Memory usage\n\nJust as information is listed below the minimum amount of memory used for each object:\n\n* message on shared = 200 bytes\n* channel on shared = 270 bytes\n* subscriber\n  ** on shared = 160 bytes\n  ** on system = 6550 bytes\n\nh1(#tests). Tests\n\nThe server tests for this module are written in Ruby, and are acceptance tests, click \"here\":tests for more details.\n\nh1(#discussion). Discussion\n\nNginx Push Stream Module \"Discussion Group\":discussion\n\nh1(#contributors). Contributors\n\n\"People\":contributors\n\n[discussion]https://groups.google.com/group/nginxpushstream\n[donate]https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick\u0026hosted_button_id=4LP6P9A7BC37S\n[eventsource_ref]http://dev.w3.org/html5/eventsource/\n[websocket_ref]http://dev.w3.org/html5/websockets/\n[comet_ref]http://en.wikipedia.org/wiki/Comet_%28programming%29\n[installation]#installation\n[examples]#examples\n[javascript_client]docs/javascript_client.textile#javascript_client\n[repository]https://github.com/wandenberg/nginx-push-stream-module\n[contributors]https://github.com/wandenberg/nginx-push-stream-module/contributors\n[changelog]CHANGELOG.textile\n[curl]docs/examples/curl.textile#curl\n[forever_iframe]docs/examples/forever_iframe.textile#forever_iframe\n[event_source]docs/examples/event_source.textile#event_source\n[websocket]docs/examples/websocket.textile#websocket\n[long_polling]docs/examples/long_polling.textile#long_polling\n[jsonp]docs/examples/long_polling.textile#jsonp\n[m-jpeg]docs/examples/m_jpeg.textile#m_jpeg\n[tests]docs/server_tests.textile\n[push_stream_channels_statistics]docs/directives/channels_statistics.textile#push_stream_channels_statistics\n[push_stream_publisher]docs/directives/publishers.textile#push_stream_publisher\n[push_stream_subscriber]docs/directives/subscribers.textile#push_stream_subscriber\n[push_stream_shared_memory_size]docs/directives/main.textile#push_stream_shared_memory_size\n[push_stream_channel_deleted_message_text]docs/directives/main.textile#push_stream_channel_deleted_message_text\n[push_stream_ping_message_text]docs/directives/main.textile#push_stream_ping_message_text\n[push_stream_channel_inactivity_time]docs/directives/main.textile#push_stream_channel_inactivity_time\n[push_stream_message_ttl]docs/directives/main.textile#push_stream_message_ttl\n[push_stream_max_subscribers_per_channel]docs/directives/main.textile#push_stream_max_subscribers_per_channel\n[push_stream_max_messages_stored_per_channel]docs/directives/main.textile#push_stream_max_messages_stored_per_channel\n[push_stream_max_channel_id_length]docs/directives/main.textile#push_stream_max_channel_id_length\n[push_stream_max_number_of_channels]docs/directives/main.textile#push_stream_max_number_of_channels\n[push_stream_max_number_of_wildcard_channels]docs/directives/main.textile#push_stream_max_number_of_wildcard_channels\n[push_stream_wildcard_channel_prefix]docs/directives/main.textile#push_stream_wildcard_channel_prefix\n[push_stream_events_channel_id]docs/directives/main.textile#push_stream_events_channel_id\n[push_stream_channels_path]docs/directives/subscribers.textile#push_stream_channels_path\n[push_stream_authorized_channels_only]docs/directives/subscribers.textile#push_stream_authorized_channels_only\n[push_stream_header_template_file]docs/directives/subscribers.textile#push_stream_header_template_file\n[push_stream_header_template]docs/directives/subscribers.textile#push_stream_header_template\n[push_stream_message_template]docs/directives/subscribers.textile#push_stream_message_template\n[push_stream_footer_template]docs/directives/subscribers.textile#push_stream_footer_template\n[push_stream_wildcard_channel_max_qtd]docs/directives/subscribers.textile#push_stream_wildcard_channel_max_qtd\n[push_stream_ping_message_interval]docs/directives/subscribers.textile#push_stream_ping_message_interval\n[push_stream_subscriber_connection_ttl]docs/directives/subscribers.textile#push_stream_subscriber_connection_ttl\n[push_stream_longpolling_connection_ttl]docs/directives/subscribers.textile#push_stream_longpolling_connection_ttl\n[push_stream_timeout_with_body]docs/directives/subscribers.textile#push_stream_timeout_with_body\n[push_stream_last_received_message_time]docs/directives/subscribers.textile#push_stream_last_received_message_time\n[push_stream_last_received_message_tag]docs/directives/subscribers.textile#push_stream_last_received_message_tag\n[push_stream_last_event_id]docs/directives/subscribers.textile#push_stream_last_event_id\n[push_stream_user_agent]docs/directives/subscribers.textile#push_stream_user_agent\n[push_stream_padding_by_user_agent]docs/directives/subscribers.textile#push_stream_padding_by_user_agent\n[push_stream_store_messages]docs/directives/publishers.textile#push_stream_store_messages\n[push_stream_channel_info_on_publish]docs/directives/publishers.textile#push_stream_channel_info_on_publish\n[push_stream_allowed_origins]docs/directives/subscribers.textile#push_stream_allowed_origins\n[push_stream_websocket_allow_publish]docs/directives/subscribers.textile#push_stream_websocket_allow_publish\n[push_stream_allow_connections_to_events_channel]docs/directives/subscribers.textile#push_stream_allow_connections_to_events_channel\n[wiki]https://github.com/wandenberg/nginx-push-stream-module/wiki/_pages\n[nginx_debugging]http://wiki.nginx.org/Debugging\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwandenberg%2Fnginx-push-stream-module","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwandenberg%2Fnginx-push-stream-module","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwandenberg%2Fnginx-push-stream-module/lists"}