Socket.io 2.x 有风帆
Socket.io 2.x with Sails
目前 sails.io 正在使用 socket.io 1.7.1。它不会在 sails 1.0 中改变。所以我打算使用 socket.io 2.0 使用 socket.io 包而不是依赖 sails real-time 层。根据 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.io 2.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');
});
}
您还需要在 .sailsrc
文件中关闭默认的 sockets
和 pubsub
挂钩:
"hooks": {
"sockets": false,
"pubsub": false
}
这也有释放 sails.io
全局空间的好处,因此您可以将其重新用于您自己的实施。
目前 sails.io 正在使用 socket.io 1.7.1。它不会在 sails 1.0 中改变。所以我打算使用 socket.io 2.0 使用 socket.io 包而不是依赖 sails real-time 层。根据 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.io 2.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');
});
}
您还需要在 .sailsrc
文件中关闭默认的 sockets
和 pubsub
挂钩:
"hooks": {
"sockets": false,
"pubsub": false
}
这也有释放 sails.io
全局空间的好处,因此您可以将其重新用于您自己的实施。