nodejs+socketio+redis实现前端消息实时推送

nodejs+socketio+redis实现前端消息实时推送

1. 后端部分 发送redis消息

可以参考此篇实现(直接使用Jedis即可)

http://www.cnblogs.com/binyue/p/4763352.html

2.后端部分: 接收redis消息

var redis;
if(process.argv.length <= 2){
  redis = require(‘redis‘).createClient();
}else{
  redis = require(‘redis‘).createClient(6379,process.argv[2]);
}
var io = require(‘socket.io‘).listen(5678);
var clients = {}
redis.subscribe(‘console‘);
redis.on(‘message‘, function(channel, data){
  if (channel=="console"){
    args = JSON.parse(data);
    for(var s in clients){
      clients[s].emit(‘event_‘ + args.id, args.message);
    }
  }
});
io.on(‘connection‘, function(socket){
  var address = socket.request.connection.remoteAddress + ":" + socket.request.connection.remotePort
  console.log(new Date() + ‘ client connected [‘+ socket.id + "] " + address);
  clients[socket.id] = socket;
  socket.on(‘disconnect‘, function(){
    console.log("discopnnect " + this.id + "-----" + this.request.connection.remoteAddress + ":" + this.request.connection.remotePort);
    delete clients[socket.id];
  });
  socket.on(‘event‘, function(message){

  });
});

package.json

{
  "name" : "real-time",
  "description" : "providing real-time message push for ",
  "version" : "0.0.1",
  "dependencies" : {
    "socket.io" : "1.2.1",
    "redis": "0.7.3",
    "socket.io-client": "1.2.1"
  }
}

前端部分 接收消息并显示

使用了 socket.io-1.0.6

var socket = io.connect(beeper_url);
    socket.on(‘event_‘ + event_id,function(data){
      callback(data);
})
时间: 2024-10-13 08:33:45

nodejs+socketio+redis实现前端消息实时推送的相关文章

基于HTTP协议之WEB消息实时推送技术原理及实现

很早就想写一些关于网页消息实时推送技术方面的文章,但是由于最近实在忙,没有时间去写文章.本文主要讲解基于 HTTP1.1 协议的 WEB 推送的技术原理及实现.本人曾经在工作的时候也有做过一些用到网页消息实时推送的项目,但是当时实现的都不是很完美,甚至有时候是通过 Ajax 轮训的方式实现.在网上也找过不少的资料,真正说到点子上的几乎没有,很多文章大都是长篇大论,说了一些新有名字,什么“HTTP 长连接”,“实时推送”,“Comet 长连接推送技术”等.但真正提到如何实现实时推送的文章倒是没有看

基于swoole+Redis的消息实时推送通知

swoole+Redis将实时数据的推送 一 实现功能 设计师订单如果设计师未抢单,超时(5分钟)设计订单时时给设计师派送, 设计师公众号中收到派单信息 设计发布者收到派单成功信息 环境 centos6.10 redis-4.0.2 swoole-src-4.4.12 php-7.1.5 MYsyql5.7 在centos6默认是gcc-4.7,安装swoole的时候需要升级到gcc-4.8 二 实现流程 1.开启swoole server端监听 2.开启swoole client连接执行定时执

signalR消息实时推送

1 <!DOCTYPE html> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 5 <title>SignalR Simple Chat</title> 6 <st

nodejs实现百度实时推送

想要加快百度收录,肯定免不了链接提交吧,当然链接提交的方式有很多种,今天来说一下百度的实时推送.. 第一次看到这post请求确实有点萌逼,我自己是做前端的对后台接触确实不多,见到的前端发送post请求不是这样发送的.后来研究才知道,原来这个post请求是由服务器来发送的.那么nodejs如何发送这个post请求? //需要推送的网站链接 var content = "https://www.meetqy.com/article?article_id=42"; //对应配置post推送的

使用Nodejs实现实时推送MySQL数据库最新信息到客户端

下面我们要做的就是把MySQL这边一张表数据的更新实时的推送到客户端,比如MySQL这边表的数据abc变成123了,那使用程序就会把最新的123推送到每一个连接到服务器的客户端.如果服务器的连接的客户端为0,也就是这时候没有客户端连接,那程序也不会执行推送信息的代码以免产生不必要的资源消耗,当有客户端连上的时候又开始推送.demo的代码大家可以到下面的Download按钮去下载. 要运行首先我们要安装nodejs要用到的mysql模块: $ npm install mysql 更多关于mysql

用node.js(socket.io)实现数据实时推送

在做商品拍卖的时候,要求在商品的拍卖页面需要实时的更新当前商品的最高价格.实现的方式有很多,比如: 1.setInterval每隔n秒去异步拉取数据(缺点:更新不够实时) 2. AJAX轮询方式方式推送数据(缺点:服务端需要在死循环中反复查询数据库) 3.websocket推送数据(缺点:仅支持html5标准的浏览器) socket.io的简要介绍 所有客户端都通过socket.io挂在nodejs服务器上(注意: 只是挂着,不需要任何循环,因为它是事件驱动的):需要推送消息了,服务器就与nod

快递企业如何完成运单订阅消息的推送

原文:快递企业如何完成运单订阅消息的推送 经常网购的朋友,会实时收到运单状态的提醒信息,这些提醒信息包括微信推送,短信推送,邮件推送,支付宝生活窗推送,QQ推送等,信息内容主要包括快件到哪里,签收等信息的提醒,这些友好的提醒信息会极大的增强购物者的体验. 笔者目前正在一家快递企业做这类消费消息的推送功能开发(大部分快递企业都有实现在客户寄完快件后可以主动接收到快递企业的运单状态推送信息),对这部分有一些体会,现分享给大家(大部分功能可能只能通过代码才方便体现出来). 订阅和推送的流程图 一.订阅

【原创】node+express+socket搭建一个实时推送应用

技术背景 Web领域的实时推送技术,也被称作Realtime技术.这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新. 应用场景: 监控系统:后台硬件热插拔.LED.温度.电压发生变化 即时通信系统:其它用户登录.发送信息 即时报价系统:后台数据库内容发生变化 技术实现方案:ajax long polling(ajax长轮询),comet(http长连接).socket 这里有篇文章介绍了这几种技术,可以看一下. http://www.ibm.com/developerworks/c

调用APP标准消息接口推送信息http协议

调用协议:Http协议 调用方式:CRM中新分派线索(实时)或者线索未及时更新(定时,每天执行一次)时,调用APP标准消息接口推送信息,成功后返回标记已通知过. 接口调用方法如下: { "apikey":"xxxsadfsd", "identifier":"com.xx.xx",//向移动应用平台申请 "receiverType":"NAME", "receiverValue&