这是我添加到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。我不知道怎么做!任何帮助都会很棒,我希望我的描述性足够好!
答案 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;