一、消息推送的实现原理与方式
1.1 实时性较强的场景
在线聊天
监控报警
视频弹幕
1.2 基于HTTP的实时消息方案
AJAX轮询(polling) //客户端不断发送请求到服务器
长轮询(longplling) //一般30s超时
异步streaing
iframe数据量
全双工:数据发送和接收可以同时进行。
HTTP协议是不具备全双工的。
1.3 软件运行原理
WebSocket协议是一种全双工的通讯方式,并且支持跨域
二、消息推送服务器的搭建
我们利用nginx的nginx-push-stream-module模块来实现消息推送服务。
2.1 环境搭建
首先需要下载模块源码,这里在git上直接克隆
git clone http://github.com/wandenberg/nginx-push-stream-module.git
将欲增加的模块路径定义为一个变量(此步骤非必要步骤,且定义的变量只能当前会话可用,只是为了后续操作方便)
NGINX_PUSH_STREAM_MODULE_PATH=$PWD/nginx-push-stream-module
以下是nginx已经安装过的情况下增加模块,因为以前nginx安装在/usr/local/nginx目录下,所以下面的操作都是以此目录为路径进行操作,如果安装到其他目录有些命令需要做对应的更改。
先查看原有nginx的配置参数并拷贝出来备用
/usr/local/nginx/sbin/nginx -V