2017-09-20 70 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