作者:caoxingchi_411 | 来源:互联网 | 2024-11-01 11:20
基于Node.js的高性能实时消息推送系统通过集成Socket.IO和Express框架,实现了高效的高并发消息转发功能。该系统能够支持大量用户同时在线,并确保消息的实时性和可靠性,适用于需要即时通信的应用场景。
node-msg-sender基于Nodejs的消息转发系统 message pusher and written in nodejs based on socket.io and express
github地址:https://github.com/gytai/node-msg-sender
消息实时推送,支持在线用户数实时统计。基于Socket.IO开发,使用websocket推送数据,当浏览器不支持websocket时自动切换comet推送数据。
支持Linux,mac,windows等环境部署。
效果截图
线上demo
http://112.74.81.224:3000/
可以通过url:http://112.74.81.224:3000/sendMsg/?type=private&uid=1504936989000&cOntent=消息内容 向当前用户发送消息
可以通过url:http://112.74.81.224:3000/sendMsg/?type=public&cOntent=消息内容 向所有在线用户推送消息
uid为接收消息的uid,如果不传递则向所有人推送消息
content 为消息内容
注:可以通过php或者其它语言的curl功能实现后台推送
下载安装
1、git clone https://github.com/gytai/node-msg-sender.git
2、npm install
3、apt-get install redis-server
4、redis-server
后端服务启动停止,先安装PM2(Advanced Node.js process manager,http://pm2.keymetrics.io/)启动服务
pm2 start bin/www –name msg-sender
停止服务
pm2 stop msg-sender
Web前端代码类似:
"/socket.io/socket.io.js"
>
script>
<script>
var socket = io.connect('http://localhost:3000');
socket.emit('login', new Date().getTime());
socket.on('message', function(msg){
$('#content').html('收到消息:'+msg);
$('.notification.sticky').notify();
});
socket.on('update_online_count', function(data){
console.log(data);
$('#online_box').html('当前在线客户端数: '+data.online_count);
});
script>其他客户端
根据websocket协议即可。具体参考websocket协议。
Nodejs后端调用api向任意用户推送数据 var type = req.query.type || msgType.public;
var cOntent= req.query.content || 'none';
var uid = req.query.uid;
switch (type){
case msgType.public:
ioSvc.serverBroadcastMsg(content);
break;
case msgType.private:
if(!uid){
return res.send({code:400,msg:'uid参数必传'});
}
ioSvc.serverToPrivateMsg(uid,content);
break;
}
Http 发送数据,可以配置跨站发送(需要设置跨域放行)。例如安卓或者IOS等其他客户端也可以方便的发送消息。
可以通过url:http://localhost:3000/sendMsg/?type=private&uid=1504936989000&cOntent=消息内容 向当前用户发送消息
可以通过url:http://localhost:3000/sendMsg/?type=public&cOntent=消息内容 向所有在线用户推送消息
备注
php 版本可以参考:workman的web-msg-sender