• Stars
    star
    170
  • Rank 223,357 (Top 5 %)
  • Language
    JavaScript
  • Created about 7 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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

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

消息实时推送,支持在线用户数实时统计。基于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=消息内容 向所有在线用户推送消息

More Repositories

1

KeFu

在线客服系统,开发语言:NodeJS。通信库:Socket.IO。UI库:前端SUI,后端LayUI.
JavaScript
423
star
2

nodejs-app-upgrade

基于Nodejs、express框架的app升级服务。数据库MongoDB。UI框架Layui Admin。
JavaScript
136
star
3

iview-site-waves-demo

iView 首页动画Demo
JavaScript
37
star
4

qt-ffmpeg-rtsp-video

使用QT界面库,FFMPEG 做解码库,用于播放流媒体以及本地视频。本项目有一个特色就是透明视频的叠加。在流媒体的显示上覆盖一层本地视频。
C
14
star
5

express-web-framework

基于express的web框架,整合sequelize、redis、mail等工具集合
JavaScript
12
star
6

vue-nodejs-admin-dinner

公司内部晚餐预定系统,也是一个vue admin 的例子。涉及到的技术有 vue iview nodejs webpack 等
Vue
6
star
7

brew-update-auto-script

一键解决brew下载慢的问题。自动更新国内镜像源、
5
star
8

chatpgt-wechat

人工智能 chatgpt 结合微信 测试
JavaScript
4
star
9

Monitor

Linux基本信息监控(cpu,内存,硬盘)以及报警推送
JavaScript
2
star
10

Node-webkit

在这里我将记录下我在node-webkit使用的优秀的模块。
2
star
11

app-download

app manage and download page (app 管理以及展示下载)
PHP
1
star
12

person-site

注意目的是学习Vue,做一个展示自己的网站
Vue
1
star
13

Javascript-Histogram-Equalization

直方图均衡是通过使用其值的直方图来增强图像中的局部对比度的一种方式。我在这篇博文中解释了这个想法。在这里,我使用d3.scale.quantile进行分组,灵感来自这里解释的这些优秀算法。
HTML
1
star