2015-01-26 22 views
0

我有一個基於express的應用程序。我有一個啓動應用程序的app.js和一個functions.js,我已經存儲了很多應用程序的功能。我想能夠訪問我的functions.js中使用的socket.io對象。但是,似乎我無法做到這一點,也無法在互聯網上找到任何解決方案。訪問app.js中的io對象

app.js:

var app = express(); //var app = express.createServer(); var http = require('http').createServer(app).listen(3001); var io = require('socket.io')(http);

functions.js:

//something like io = require('./app').io

我希望能夠訪問IO對象,所以我可以發出郵件到我的客戶端的JavaScript 。

回答

2

使用module.exports使io對象可用於其他模塊。

app.js:

var express = require('express'); 
var app = express(); 
var http = require('http').createServer(app).listen(3001); 
var io = require('socket.io')(http); 

app.io = io; 
module.exports = app; 

require('./functions') 

functions.js:

var io = require('./app').io; 
io.on('connection', function(socket) { 
    console.log('a user connected'); 
); 
+0

感謝您的回答。問題是,我必須從app.js 'module.exports = app'中導出應用程序,以便使'npm start'工作。我嘗試更改www文件,以便我能夠導出不僅僅是應用程序,但我沒有運氣。我不確定該從哪裏出發。或者如果npm start值得使用? – 2015-01-26 20:31:44

+0

你可以在'app'對象上添加'io'作爲屬性。檢查我編輯的答案。 – influxd 2015-01-26 20:46:03

+0

好的,我有: app.js: 'var io = require('socket.io')(http); app.io = io; module.exports = app;' and functions.js: 'var io = require('./ app')。io; ('連接',函數(套接字){ console.log('user connected'); });' 但我得到以下錯誤:**無法調用未定義的方法' * – 2015-01-26 21:08:50