2016-07-31 3 views
0

사용자 이름을 등록하는 파일에는 익스프레스 모듈이 있고 채팅을 생성하려면 socket.io 모듈이 있습니다. 소켓 모듈에 사용자 이름을 보내는 가장 좋은 방법은 무엇일까요?모듈 간 통신

server.js

var express = require('express'); 
app = express(); 
var http = require('http').Server(app); 
var io = require('socket.io')(http); 
var morgan = require('morgan'); 
var wagner = require('wagner-core'); 
var bodyParser = require('body-parser'); 

var port = process.env.PORT || 8080; 

var name = []; 

app.use(morgan('dev')); 
app.use(express.static('public')); 

app.use(bodyParser.urlencoded({'extended':'true'}));   // parse application/x-www-form-urlencoded 
app.use(bodyParser.json());          // parse application/json 
app.use(bodyParser.json({ type: 'application/vnd.api+json' })); // parse application/vnd.api+json as json 

var dependencies = require("./app/dependencies.js")(wagner); 

require('./app/routes.js')(app,wagner); 

require('./app/socketio.js')(io,wagner); 

http.listen(port,function(){ 
    console.log('listening on *:'+port); 
}); 

./app/routes.js

module.exports = function(app,wagner) { 

    // api ------------------------------------------------------------------ 

    app.post('/api/user', function(req, res) { 
     console.log(req.body); 
     // name.push(req.body.name); 
     res.json({ message: 'from post' }); 
     wagner.invoke(function (UserName){ 
      UserName = "mjt"; 
     }); 
    }); 
}; 

./app/socketio.js

module.exports = function (io,wagner) { 

    io.on('connection', function(socket){ 
     var userName = wagner.invoke(function(UserName) { 
      console.log(UserName); 
     }); 

     console.log('a user connected'); 
     io.emit('user connected', "connected"); 

     socket.on('chat message', function(msg) { 
      console.log('message: ' + msg); 
      io.emit('chat message', msg); 
     }); 

     socket.on('disconnect',function() { 
      console.log('user disconnect'); 
      io.emit('user disconnected', "disconnected"); 
     }); 
    }); 
} 

답변

1

하여 데이터를 전달하는 방법을 발견 모듈 싱글 톤, 이것은 최선의 해결책이 아닐지 모르지만, 내가 원하는 것을 얻을 수있다.

더 나은 방법을 제안 해주십시오 나 같은 필요한 사람에게 도움이 16,

./app/socketio.js

var socketio = function() {} 

socketio.prototype.users = []; 

socketio.prototype.start = function(io){ 
      console.log("from start"); 
    var that = this.users; 
    var people = {}; 
    io.on('connection', function(socket){ 
     console.log(that); 

     console.log('a user connected'); 
     io.emit('user connected', "connected"); 

     socket.on('chat message', function(msg) { 
      console.log('message: ' + msg); 
      io.emit('chat message', msg); 
     }); 

     socket.on('disconnect',function() { 
      console.log('user disconnect'); 
      io.emit('user disconnected', "disconnected"); 
     }); 
    }); 
    } 

socketio.prototype.updateUser = function (user) { 
    console.log(user); 

    this.users.push(user); 
     console.log(this.users); 
} 
module.exports = exports = new socketio(); 

server.js

var express = require('express'); 
app = express(); 
var http = require('http').Server(app); 
var io = require('socket.io')(http); 
var morgan = require('morgan'); 
var wagner = require('wagner-core'); 
var bodyParser = require('body-parser'); 

var port  = process.env.PORT || 8080; 


var name = []; 

var socketIo = require('./app/socketio.js'); 

var startio = socketIo.start(io); 
socketIo.updateUser("hey"); 
socketIo.updateUser("there"); 

app.use(morgan('dev')); 
app.use(express.static('public')); 

app.use(bodyParser.urlencoded({'extended':'true'}));   // parse application/x-www-form-urlencoded 
app.use(bodyParser.json());          // parse application/json 
app.use(bodyParser.json({ type: 'application/vnd.api+json' })); // parse application/vnd.api+json as json 

var dependencies = require("./app/dependencies.js")(wagner); 

require('./app/routes.js')(app,wagner,socketIo); 

http.listen(port,function(){ 
    console.log('listening on *:'+port); 
}); 

희망, 감사