轻量级推送服务和实时在线监控平台,同时用于开发即时通信系统,基于node的socket.io,支持web、android、ios客户端,支持移动端离线推送,可进行分布式部署
随着互联网网速的不断提升,即时消息通信的应用场景越来越多。我在参与公司多个产品的研发中,不止一次的遇到需要集成聊天功能的需求。既然是聊天就必须把消息尽快送达目标用户,做的多了就有了一套自己的经验和想法,然后借着闲暇时间一点点的就写出了这个项目。这个项目灵感来源于实际开发工作,同时又把它应用到自己的工作中。希望它能帮到你,也希望你能给我更多的反馈和改进意见,让它帮助更多的人。
RESTful
接口方式调用推送服务socket.io
协议与推送服务建立连接redis
保存系统运行时所需的数据,保证系统响应速度user_ + userid
ios
平台则用apns
做离线推送,如果是android
会保存该消息直到客户端上线sudo docker run -id -p 443:443 -p 80:80 --name light-push-demo liuss/light-push:1.2.0 /mnt/data/start.sh
https://127.0.0.1/push-admin
登录名 admin 密码 123456// demo为命名空间;uuid为客户端唯一标示;userid为客户端所属的用户ID
let socket = io.connect('https://127.0.0.1:55555/demo?uuid=' + uuid + '&userid=' + userid, {
path: '/push/socket.io/'
});
socket.on('connect', function () {
// 客户端主动加入房间
socket.emit('joinRoom', ['room1'], function (result) {
console.log('joinRoom:' + JSON.stringify(result));
});
// 接收服务器端的推送消息
socket.on('push', function (data) {
console.log('push:' + JSON.stringify(data));
// 消息确认回执
socket.emit('ackPush', { id: data.id });
});
// 客户端主动离开房间
socket.emit('leaveRoom', ['room2'], function (result) {
console.log('leaveRoom:' + JSON.stringify(result));
});
});
nodejs
(需要超级管理员权限) 详情
curl --silent --location https://rpm.nodesource.com/setup_10.x | sudo bash -
sudo yum install -y nodejs
npm install -g pm2 --registry=https://registry.npm.taobao.org
sudo npm install -g pm2
src/config.yaml
中的redis_address
用来配置redis服务器地址 , 如果redis是集群模式,则将该配置改为数组类型
yum install nginx
系统初始化之后,需要调用 /api/admin/namespace/save
接口来生成一个命名空间,客户端通过这个命名空间连接服务器;每个客户的必须有一个所属的命名空间才能连接服务器,否则服务器会拒绝客户端的所有请求
集群部署nginx
方案,请参考 doc/nginx.conf
;redis
配置,请参考 doc/redis.conf
;node
单机集群pm2
方案配置,请参考app.json
,pm2使用说明
通过node
命令启动服务,则端口配置见 src/config.yaml
, connector_port
: 连接服务器; logic_port
: 接口服务器;如果通过pm2
方式启动,则app.json
中 args
有 -p
参数,则会覆盖 src/config.yaml
中端口配置
详情见 doc/performance.md
nohup node --max-old-space-size=3000 simulator.js >> test1.log 2>&1 &
test/simulator.yaml
测试配置,主要调整的参数:server,push_option_path,client_namespace,client_total,client_uuid_initclient_uuid_init
需要在每次启动测试实例时手动修改,一般为现有在线客户端数 + client_total
/etc/sysctl.conf
,增加如下配置
fs.file-max=100000
fs.nr_open=100000
net.ipv4.ip_local_port_range=1024 65000
exit
命令退出,否则后台测试进程会被系统killyum install httpd-tools -y
test/ab.txt
test/ab_post
接口说明和注意事项见wiki
推送服务控制台项目 地址
配套android SDK
QQ技术交流群 643889498
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )