nginx部署下SSE实现心跳功能

时间:2022-09-16 21:57:22

具体介绍参考园友 SSE:服务器发送事件,使用长链接进行通讯,以下只做个人实现的分享;

nginx.config:

location /apis {
rewrite ^.+apis/?(.*)$ /$1 break;
include uwsgi_params;
proxy_pass http://192.168.5.127:8088/;
proxy_buffering off;//(关键参数)
}
不配置proxy_buffering off的话,会出现请求发出后,接口收到直接返回,无法保持长连接。
参考网上说明:proxy_buffering这个参数用来控制是否打开后端响应内容的缓冲区,如果这个设置为off,那么proxy_buffers和proxy_busy_buffers_size这两个指令将会失效。

前端js代码(angularjs框架):

if (!!window.EventSource) {
                        var source = new EventSource('/apis/messages');
                        source.onopen = function(event) {
                            // handle open event
                        };
                        source.onmessage = function(event) {
                            var data = event.data;
                            console.log("hb_data:"+data);
                            //广播信息
                            $scope.$broadcast("BroadInfo",data);
                            // handle message
                        };
                    }