项目是一个web即时通讯,先调研的是js的服务器推送 叫什么 ajax push engine, 各种坑,官网下载下来的压缩包都不能解压,虽然最后搭建好环境了,但是实际使用需要客户机配置host,不现实, 目前采用的服务器端推送技术是基于nginx的第三方模块Nginx Push Stream Module 具体安装不在本文讲了,网上很多。 注意的是目前可以作为插件安装进已经编译好的nginx中。项目使用的服务器是tenginx 传说很强大,高并发,不过我目前还驾驭不了,在工作中慢慢学习。
遇到的问题,1.官方会提供一个pushstream.js,作为封装好的一个客户端推送触发器。 如果你自己能力好的话可以自己重新依据API根据自己业务重新写。 我没那能力,怕写的稳定性不好,所以使用官方的js。 服务器推送我是自己用php写了服务端推送功能, 传json到前端。
如果使用两台服务器, 一台作为推送服务器,一台作为程序载体。 涉及到一个跨域问题。 我遇到的问题是客户端接受到推送消息,但是却重复接受相同的消息, 这里需要使用JSONP的配置。 设置target,time。 然后就可以避免,这个是和Nginx Push Stream Module 的开发者Gmail 邮件回复中知道。
关于Nginx Push Stream Module 的并发率,以及同时在线问题, 他也在邮件中给了一个测试数据