Javascript 带Express的Socket.io和Node.js>;4.0版本
我已经读了一些关于这个问题的其他帖子,但似乎没有正确理解 socket.io“get started”演练已经过时,它告诉我们在app.js文件中做些什么。从快车4号开始。一切都在www文件中处理 到目前为止,一切都很好——应该没什么大不了的 我使用以下命令在正确的项目文件夹中安装了socket.io:Javascript 带Express的Socket.io和Node.js>;4.0版本,javascript,node.js,sockets,socket.io,Javascript,Node.js,Sockets,Socket.io,我已经读了一些关于这个问题的其他帖子,但似乎没有正确理解 socket.io“get started”演练已经过时,它告诉我们在app.js文件中做些什么。从快车4号开始。一切都在www文件中处理 到目前为止,一切都很好——应该没什么大不了的 我使用以下命令在正确的项目文件夹中安装了socket.io:npm install--save socket.io 紧接着,我转到bin/www文件并添加了以下代码: ... /** * Create HTTP server. */ var serv
npm install--save socket.io
紧接着,我转到bin/www文件并添加了以下代码:
...
/**
* Create HTTP server.
*/
var server = http.createServer(app);
/**
* Socket IO
*/
var io = require('socket.io')(server);
/**
* Listen on provided port, on all network interfaces.
*/
server.listen(port);
server.on('error', onError);
server.on('listening', onListening);
...
既然我在www文件中需要socket.io,我将向app.js添加以下代码。由于app.js不再处理必须进入www文件的内容:
io.on('connection', function(socket){
console.log('a user connected');
});
遗憾的是,我不知道如何访问www文件夹之外的变量io
我已经创建了一个/后端路由,它应该动态显示所有在线用户。如何访问该路径上的io?如果出于任何原因您需要访问路由器中的变量
io
,您可以使用应用程序。set
:
bin/www:
var io = require('socket.io')(server);
app.set('io',io);
router.get('/', function(req,res,next) {
console.log( req.app.get('io') );
});
路由/backend.js:
var io = require('socket.io')(server);
app.set('io',io);
router.get('/', function(req,res,next) {
console.log( req.app.get('io') );
});
您可以将下面的代码从www文件放到某个单独的socketjs文件中 socketjs文件中的代码如下所示:-
module.exports = function (io) {
io.sockets.on('connection', function(socket) {
//..
}
}
通过这种方式,您可以在www文件中导入该socketjs文件,如下所示:-
var app = express(),
server = require('http').createServer(app),
socket = require('./socket');
var io = require('socket.io').listen(server);
socket(io)
希望这对你有帮助