【问题标题】: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】:
对于逻辑处理,可以放在以下几个地方:
控制器:请求是否应该触发实时事件
服务:如果你愿意 :) 但我认为 Controller 被提及
-
/config/socket.js onConnect(), onDisconnect(): 如果你想在一些房间添加或删除连接的socket,或者一些初始socket设置等。
李>
/policies/sessionAuth.js:用于一些实时认证逻辑
- 其他地方...
此外,您应该考虑resourceful-pubsub 功能,它可以帮助您在使用套接字实现实时进程时节省大量精力。我发现它很酷:)