使用SailsJS和socket io可以在数据发生变化时保持我网站的所有打开副本

时间:2014-09-24 15:00:39

标签: socket.io sails.js

让我说我正在建立呐喊。

我需要所有打开网站的用户在任何给定时间都拥有相同的数据。如果用户喜欢某个地方,则必须在所有页面上进行更改。

我知道这一定很容易。但我需要一些指导。请评论它愚蠢的证明:)

由于

1 个答案:

答案 0 :(得分:1)

您需要通过websockets连接服务器和浏览器。此代码是从工作代码中删除并简化,但未经过测试。如果你有一个简单的api工作,它应该足以让你入门。帆0.10.5

浏览器

$(document).ready(function(){
  io.socket.get('/computer');
  io.socket.on('computer', function(updates){
    console.log("Got an update event");
  }
});

服务器

// Add to controller
  index: function (req, res) {
    Computer.find({},function(err, computers){
      if(req.isSocket){
        console.log("websocket connected");
        Computer.subscribe(req.socket,computers);
      }
      return res.json(
        computers
      );
    });
  },

  // Add to model
  afterUpdate: function(computer, cb){
    console.log("Someone updated a model. Publishing update to ws subscribers");
      Computer.publishUpdate(computer.id, [computer]);
    cb();
  },

有关详细信息,请参阅sails文档http://sailsjs.org/#/documentation/reference/websockets/resourceful-pubsub http://sailsjs.org/#/documentation/reference/websockets/sails.io.js