Nginx的推送模块,实现简单的服务器长连接【nginx-push-stream-module】

 

如果你的业务是短连接,但是要主动推送某些东西,做成长连接的样子。

例如:

    卡牌游戏,他是弱交互,但是需要一点推送和聊天服务。

    部分商户后台,需要在有订单的时候来个弹窗。

 

Github:https://github.com/wandenberg/nginx-push-stream-module

 

介绍是说支持EventSource, WebSocket, Long Polling, 和 Forever Iframe。

 

这里用WebSocket举例

由于我的机器里面有NGINX,只能再编译一个举例:

 

wget nginx.org/download/nginx-1.8.0.tar.gz

tar -zxf nginx-1.8.0.tar.gz

apt-get install git

git clone https://github.com/wandenberg/nginx-push-stream-module

 

编辑配置文件,让他只监控8080

vim nginx-1.8.0/conf/nginx.conf

worker_processes  auto;
events {
    worker_connections  2048;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  30;
    push_stream_max_messages_stored_per_channel 20;
    push_stream_message_ttl 7d;
    push_stream_shared_memory_size 2048M;
    server {
        listen       8080;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        location /channels-stats {
            push_stream_channels_statistics;
            push_stream_channels_path   $arg_id;
        }
        location /pub {
            push_stream_publisher admin;
            push_stream_store_messages on;
            push_stream_channels_path   $arg_id;
        }
        location ~/sub/(.*) {
            push_stream_subscriber;
            push_stream_channels_path   $1;
        }
        
        location ~ /ws/(.*) {
            push_stream_subscriber websocket;
            push_stream_channels_path                   $1;
            push_stream_message_template                "~text~";
            push_stream_websocket_allow_publish         off;
            push_stream_ping_message_interval           10s;
        }        
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

 

此处的配置参考了 baseconfig,以及websocket配置(点我)

Nginx的推送模块,实现简单的服务器长连接【nginx-push-stream-module】_第1张图片

cd nginx-1.8.0

./configure --add-module=./../nginx-push-stream-module

make

make install

 

这时候推送服务器已经架设完毕了

你的推送服务器http请求就是 

http://你的ip:8080

你的推送服务器ws监控就是

ws://你的ip:8080

 

官方举例说,你给pub推送消息的时候,你的ws也会收到,我们测试一下

 

首先我们写一段JS,让他监控我的服务器频道为medusaTest,随便新建个页面吧

 




    
    
    
    Document


    TestPage


 

如果想监控多个频道

 

ws://192.168.1.50:8080/ws/mt/test2/id1to2/...

 

然后用POST向该频道推送一下数据试一下,我这里用的是POSTMAN,当然你也可以自己写脚本

http://192.168.1.50:8080/pub/?id=medusaTest

Nginx的推送模块,实现简单的服务器长连接【nginx-push-stream-module】_第2张图片

 

简单的使用完成了,具体基本都是业务进行拓展

官方文档介绍的还算详细

从此告别JS轮训和业务上难搞的服务器端长连接

 

告辞

你可能感兴趣的:(php,socket,服务器推送)