基于redis subscribe/publish的消息实时推送

时间:2021-11-21 19:51:53
  1. 安装Redis,启动
    • 参考官网 http://redis.io/download
      $ wget http://download.redis.io/releases/redis-2.8.17.tar.gz
      $ tar xzf redis-2.8.17.tar.gz
      $ cd redis-2.8.17
      $ make

  2. 安装webdis,启动
    • 参考官网 http://webd.is
      $ git clone git://github.com/nicolasff/webdis.git

      $ cd webdis

      $ make

      $ ./webdis &

    • webdis的配置文件为webdis.json, 设置其中的websockets为yes即可支持websocket
    • 权限配置部分默认是允许执行所有命令,为了安全起见,可以修改源码中的acl.c,修改acl_allow_command函数中authorized的初始值为0,之后配置文件中只填写enabled项即可只允许访问指定命令,disabled可忽略,这里我们配置"enabled":["SUBSCRIBE"]
  3. JS部分
    • ws = new WebSocket('ws://localhost:7379');
      ws.onopen = function(){
      console.log('connect Ok');
      ws.send(JSON.stringify(["SUBSCRIBE","test"]));
      }
      ws.onmessage = function(evn){    console.log(evn);}
  4. 然后我们在Redis客户端发送 publish test "hello world",可以看到已经收到推送过来的消息了。一个简单的实时消息推送就完成了