Express 4:我在app.js中设置了变量,我需要将它发送到我的路线

时间:2015-05-18 11:35:11

标签: javascript node.js express socket.io

这是我添加到app.js页面的内容。 (使用快速发电机)

app.js

var express = require('express');
var socket_io = require( "socket.io" );

var app = express();

// Socket.io
var io = socket_io();
app.io = io;

现在,如果我要做以下事情:

io.on('connection', function (socket) {
   console.log("connection made!");
});

这很好用!但我想知道,如何将socket_io发送到我的路线?例如,我有一个名为'playground'的路由,我想在该路由中专门使用socket_io。我不知道怎么做!任何帮助都会很棒,我希望我的描述性足够好!

1 个答案:

答案 0 :(得分:2)

有很多方法可以做到这一点。

您可以将io作为函数参数传递给路径模块:

<强> app.js

var express = require('express');
var socket_io = require( "socket.io" );

var app = express();

// Socket.io
var io = socket_io();

var route = require('./route')(io);

<强> route.js

module.exports = function(io) {
    io.on('connection', function (socket) {
       console.log("connection made!");
    });
};

或者您可以导出init方法:

<强> route.js

module.exports.init = function(io) {
    io.on('connection', function (socket) {
       console.log("connection made!");
    });
};

或者您可以为路线定义构造函数:

<强> app.js

var express = require('express');
var socket_io = require( "socket.io" );

var app = express();

// Socket.io
var io = socket_io();

var Route = require('./route');

var r = new Route(io);
r.doSomething();

<强> route.js

var Route = function(io) {
    this.io = io;
    io.on('connection', function (socket) {
       console.log("connection made!");
    });
};

Route.prototype.doSomething = function() {
    console.log('hi');
};

// route.js
module.exports = Route;