2017-09-20 69 views
0

目前sails.io使用的是socket.io 1.7.1。它在1.0版本中不会改变。所以我打算使用socket.io包使用socket.io 2.0,而不是依赖sails实时层。据socket.io文档,这是很容易在快递实现如下:带风帆的Socket.io 2.x

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'); 
}); 

我们如何写帆同socket.io 2.0实现?

回答

1

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'); 
    }); 

} 

您还需要关闭默认socketspubsub挂钩,在您的.sailsrc文件:

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

这也具有释放全局的好处,因此您可以将其重用于自己的实现。

+0

如果我在Bootstrap中有一个实现,你如何建议导出用于控制器发送消息的套接字?连接建立后,我应该将它分配给sails.config.global还是'sails.socket = socket'? – SpaceX