基于Nodejs的高并发实时消息转发系统 message pusher and written in nodejs based on socket.io and express

基于Nodejs的消息转发系统 message pusher and written in nodejs based on socket.io and express

github地址:https://github.com/gytai/node-websocket-msg-sender

消息实时推送,支持在线用户数实时统计。基于Socket.IO开发,使用websocket推送数据,当浏览器不支持websocket时自动切换comet推送数据。

支持Linux,mac,windows等环境部署。

效果截图

node-msg-sender-demo

线上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-websocket-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前端代码类似:

// 引入前端文件
<script src="/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('当前在线客户端数:&nbsp;'+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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值