laravel-http-pushstream-broadcaster, 用于 HTTP Pushstream Nginx 模块的Laravel 广播

分享于 

8分钟阅读

GitHub

  繁體 雙語
Laravel Broadcaster for the HTTP Pushstream Nginx Module
  • 源代码名称:laravel-http-pushstream-broadcaster
  • 源代码网址:http://www.github.com/cmosguy/laravel-http-pushstream-broadcaster
  • laravel-http-pushstream-broadcaster源代码文档
  • laravel-http-pushstream-broadcaster源代码下载
  • Git URL:
    git://www.github.com/cmosguy/laravel-http-pushstream-broadcaster.git
    Git Clone代码到本地:
    git clone http://www.github.com/cmosguy/laravel-http-pushstream-broadcaster
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/cmosguy/laravel-http-pushstream-broadcaster
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    HTTP推送流 Nginx MODULE Laravel 广播驱动程序

    感谢你对 Laravel的HTTP推送流 Nginx 广播驱动程序感兴趣。 如果你在这里,那是因为你试图利用 Laravel 5.1广播事件中的最新特性。 Nginx的 Pushstream MODULE 是一个强大的web socket系统。

    为什么使用 HTTP Pushstream?

    如果你想真正吸收这里 MODULE 功能的能力,那么请查看在这个链接中,来自 Disqus的开发人员的想法:

    http://highscalability.com/blog/2014/4/28/how-disqus-went-realtime-with-165k-messages-per-second-and-l.html

    :这个驱动程序是如何工作的

    在 /sub/sub/sub/sub/sub中,你可以将你的client/子查询中的一个插座快速打开,然后使用 web socket或者长时间轮询将你的广播推送出去。

    /子请求由 GuzzleHttp 包内部调用。 broadcasting.php 配置文件将使用收费的驱动程序,在那里你可以控制向你的pub/sub端点的HTTP请求。

    你可以使用访问密钥 MODULE 来锁定你的pub/sub Nginx 端点。 你可以在这里配置密钥。

    要求

    安装

    编写一个编辑器需要获取这里软件包: composer require cmosguy/laravel-http-pushstream-broadcaster

    接下来,进入 config/broadcasting.php 文件并相应地添加以下行。 base_url 指的是用于你的HTTP请求 pub/子路径的web socket root:

    
     'default' => 'pushstream',
    
    
    
     'pushstream' => [
    
    
     'driver' => 'pushstream',
    
    
     'base_url' => 'http://localhost',
    
    
     'access_key' => md5('foo'),
    
    
     'cert' => null
    
    
    //or 'cert' => 'path/to/server.crt' for self-signed certificate
    
    
     ]
    
    
    
    

    config/app.php 中,将以下行添加到 providers array:

    
    'CmosguyBroadcastingPushStreamBroadcastManagerProvider'
    
    
    
    

    示例 Nginx 配置

    /etc/nginx/nginx.conf 文件中添加:

    
    push_stream_shared_memory_size 32M;
    
    
    
    

    编辑 server { 部分中的路由配置文件。 显然,你需要理解和修改项目 below。 下面的配置信息是为了让你开始。 如果你想要更全面的配置检查 ,请执行以下操作:

    
    location/channels-stats {
    
    
     # activate channels statistics mode for this location
    
    
     push_stream_channels_statistics;
    
    
    
     # query string based channel id
    
    
     push_stream_channels_path $arg_id;
    
    
    }
    
    
    
    location/pub {
    
    
     # activate publisher (admin) mode for this location
    
    
     push_stream_publisher admin;
    
    
    
     # query string based channel id
    
    
     push_stream_channels_path $arg_id;
    
    
    }
    
    
    
    location ~/sub/(.*) {
    
    
     # activate subscriber (streaming) mode for this location
    
    
     push_stream_subscriber;
    
    
    
     # positional channel path
    
    
     push_stream_channels_path $1;
    
    
    }
    
    
    
    location ~/ws/(.*) {
    
    
     # activate websocket mode for this location
    
    
     push_stream_subscriber websocket;
    
    
    
     # positional channel path
    
    
     push_stream_channels_path $1;
    
    
     if ($arg_tests ="on") {
    
    
     push_stream_channels_path"test_$1";
    
    
     }
    
    
    
     # store messages in memory
    
    
     push_stream_store_messages on;
    
    
    
     push_stream_websocket_allow_publish on;
    
    
    
     if ($arg_qs ="on") {
    
    
     push_stream_last_received_message_time"$arg_time";
    
    
     push_stream_last_received_message_tag"$arg_tag";
    
    
     push_stream_last_event_id"$arg_eventid";
    
    
     }
    
    
    }
    
    
    
    

    锁定 pub/子端点

    
     location/pub {
    
    
     # activate publisher (admin) mode for this location
    
    
     push_stream_publisher admin;
    
    
     accesskey on;
    
    
     accesskey_hashmethod md5;
    
    
     accesskey_arg"access_key";
    
    
     accesskey_signature"foo"
    
    
    
     # query string based channel id
    
    
     push_stream_channels_path $arg_id;
    
    
     }
    
    
    
    

    在你的应用程序中的使用

    所以,一旦准备好触发事件,就可以通过只在事件处理程序中扩展这里 broadcastOn 来轻松地执行这里操作:

    <?phpnamespaceAppEvents;useIlluminateQueueSerializesModels;useIlluminateContractsBroadcastingShouldBroadcast;classSomeEventimplementsShouldBroadcast{useSerializesModels;/** * @var Foo*/public$foo;publicfunction__construct(Foo$foo) {//$this->foo=$foo; }/** * Get the channels the event should be broadcast on. * * @return array*/publicfunctionbroadcastOn() {return ['foochannel-'.$this->foo->uuid]; }}

    客户端

    请从以下位置下载 pushstream.js:

    研究推送模块

    这里时,获取 MODULE 和功能的更多信息的唯一方法直接来自github存储库,所以请阅读:

    免责声明

    这决不是关于如何工作的唯一方法。 你需要了解所有的选项,并且肯定有一个

    帮助

    请帮助我更新这里文档。 如果没有意义或者你看到什么愚蠢的东西让我知道。 另外,如果有一种方法进一步扩展并使它的更灵活,请提交一个关于这些内容的公关。


    bro  HTTP  模块  Laravel  PUSH  Nginx  
    相关文章