【问题标题】:Where is a good place to put socket.io logic in sails.js在sails.js中放置socket.io逻辑的好地方在哪里
【发布时间】:2013-09-19 04:05:54
【问题描述】:

如果我想使用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();
};

【问题讨论】:

标签: javascript socket.io sails.js


【解决方案1】:

直到0.9.4 才支持此功能。

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

步骤 2. 使用 cli 生成帆

第三步,见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");

  },
...

【讨论】:

    【解决方案2】:

    对于逻辑处理,可以放在以下几个地方:

    1. 控制器:请求是否应该触发实时事件

    2. 服务:如果你愿意 :) 但我认为 Controller 被提及

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

      李>
    4. /policies/sessionAuth.js:用于一些实时认证逻辑

    5. 其他地方...

    此外,您应该考虑resourceful-pubsub 功能,它可以帮助您在使用套接字实现实时进程时节省大量精力。我发现它很酷:)

    【讨论】:

      猜你喜欢
      • 2011-09-08
      • 1970-01-01
      • 2011-06-03
      • 2011-08-02
      • 1970-01-01
      • 2014-03-16
      • 2014-02-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多