在sails.js中放置socket.io逻辑的好地方在哪里

时间:2013-09-19 04:05:55

标签: javascript socket.io sails.js

如果我想使用sails.io,那么在哪里放置我的逻辑? config/bootstrap.js是个好地方吗?或者我可以在其他地方创建一些其他文件吗?

以下代码有效:

// config/bootstrap.js
module.exports.bootstrap = function (cb) {

  sails.io.sockets.on('connection', function(socket) {
    console.log("Got a connected client");

  });

  cb();
};

2 个答案:

答案 0 :(得分:1)

0.9.4之前,它不支持此功能。

步骤1.获取最新版本的sails.js

步骤2.使用cli生成风帆

第3步。请参阅config/sockets.js,自定义onConnect功能,如下所示:

module.exports.sockets = {

  // This custom onConnect function will be run each time AFTER a new socket connects
  // (To control whether a socket is allowed to connect, check out `authorization` config.)
  // Keep in mind that Sails' RESTful simulation for sockets 
  // mixes in socket.io events for your routes and blueprints automatically.
  onConnect: function(session, socket) {

    // By default: do nothing
    // This is a good place to subscribe a new socket to a room, inform other users that
    // someone new has come online, or any other custom socket.io logic
    console.log("Got a connected client");

  },
...

答案 1 :(得分:0)

对于逻辑处理,您可以将它放在以下位置:

  1. 控制器:如果请求应触发实时事件

  2. 服务:如果你想:)但我认为控制器被提及

  3. /config/socket.js onConnect(),onDisconnect():如果要在某些房间添加或删除连接的套接字,或者某些初始套接字设置等,

  4. /picies/sessionAuth.js:对于某些实时身份验证逻辑

  5. 其他地方......
  6. 此外,您应该考虑resourceful-pubsub功能,它可以帮助您节省大量使用套接字实现实时进程的工作。我发现它非常酷:)