Socket.io 2.x带帆

Socket.io 2.x带帆,socket.io,sails.js,Socket.io,Sails.js,目前sails.io正在使用socket.io 1.7.1。它不会在sails 1.0中改变。所以我计划使用socket.io 2.0,使用socket.io包,而不是依赖sails实时层。根据socket.io文档,在express中很容易实现,如下所示: var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); app.get('/

目前sails.io正在使用socket.io 1.7.1。它不会在sails 1.0中改变。所以我计划使用socket.io 2.0,使用socket.io包,而不是依赖sails实时层。根据socket.io文档,在express中很容易实现,如下所示:

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

app.get('/', function(req, res){
  res.sendFile(__dirname + '/index.html');
});

io.on('connection', function(socket){
  console.log('a user connected');
});

http.listen(3000, function(){
  console.log('listening on *:3000');
});

我们如何在sails中编写相同的socket.io2.0实现

在Sails 1.0应用程序中使用的底层Express服务器公开为
Sails.hooks.http.server
。因此,您可以在应用程序的
config/bootstrap.js
文件中,将其放在上面:

module.exports.bootstrap = function (done) {

  var io = require('socket.io')(sails.hooks.http.server);
  io.on('connection', function(socket){
    console.log('a user connected');
  });

}
"hooks": {
  "sockets": false,
  "pubsub": false
}
您还需要关闭
.sailsrc
文件中的默认
sockets
pubsub
挂钩:

module.exports.bootstrap = function (done) {

  var io = require('socket.io')(sails.hooks.http.server);
  io.on('connection', function(socket){
    console.log('a user connected');
  });

}
"hooks": {
  "sockets": false,
  "pubsub": false
}

这还具有释放
sails.io
global的好处,因此您可以将其重新用于您自己的实现。

如果我在Bootstrap中有一个实现,您建议如何为控制器导出套接字以发出消息?建立连接时,我应该将其分配给sails.config.global还是
sails.socket=socket