2016-06-30 7 views
1

私が表現し、私のapp.jsは少し混雑してきていることを見つけることが新しいです。私はの線に沿って何かをしようとしExpress.jsには別のファイルのソケットイベントが含まれていますか?

io.sockets.on("connection", function(socket){ 
    //Require socket event file here 
}); 

以内にそれを、私のソケットイベントのすべてを取るフォルダ内の別のファイルにそれらを入れて含めることができる方法はあります:

require('./mysockets')(server); 

およびその他のファイル行う際に:

var io = require("socket.io"); 

// declare module constructor that is passed the http server to bind to 
module.exports = function(server) { 
    io.listen(server); 
    //My code here 
}; 

私は、このインスタンスでは何かが足りないのですか? http://pastebin.com/zvs8aMjN

これは私が上記の操作を行うとき、私は、コンソールに取得していますエラーを示しています。私はペーストビンが含まれています。

EDIT:

は、それが使用されているかを示すために私のソケットイベントを追加しました。しかし私はインクルードはそれを破るように見える必要が、私のapp.jsから直接それを実行している場合、すべてのコードが動作確認されています。

console.log("Client connection, no username"); 

    // =============================================== 
    // DISCONNECTION 
    // =============================================== 
    socket.on('disconnect', function(data) { 
     // Allows us to track if a unknown user has disconnected or if a known user has dosconnected 
     if(!socket.username) { 
     console.log("Client disconnected before username"); 
     } else { 
     console.log("Player " + socket.username + " disconnected"); 
     serverFunctions.lobbyCheck(); 
     // Removes only one user 
     allUsers.splice(allUsers.indexOf(socket.username), 1); 
     } 

     // Calls update usernames function 
     serverFunctions.updateUsernames(); 
    }); 

    // =============================================== 
    // NEW PLAYER LOGIC 
    // =============================================== 

    // Player has connected 
    // Checks if username is already been used 
    socket.on("new user", function(data, callback){ 
     // If it exists return false, else add it to array of allUsers 
     if (allUsers.indexOf(data) != -1) { 
     callback(false); 
     } else { 
     callback(true); 
     socket.username = data; 
     allUsers.push(socket.username); 
     // Tells all active users which users are active 
     serverFunctions.updateUsernames(); 
     console.log("Player " + socket.username + " connected"); 

     serverFunctions.lobbyCheck(); 
     // Calls theplayer check in order to push through the player names client side 
     serverFunctions.playerCheck(); 
     } 
    }); 

    // =============================================== 
    // Game Start Logic 
    // =============================================== 

    // =============================================== 
    // CHAT LOGIC 
    // =============================================== 

    // Broadcasts a message 
    socket.on("send message", function(data){ 
     io.sockets.emit("new message", {msg: data, user: socket.username}); 
    }); 
}); 

これは私のsocketconnection上で起こる:app.jsで

var express = require('express'); 
var path = require('path'); 
var favicon = require('serve-favicon'); 
var logger = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 

var routes = require('./routes/index'); 
var users = require('./routes/users'); 

var app = express(); 
var server = require('http').Server(app); 
var io = require('socket.io')(server); 

// view engine setup 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'hjs'); 

// uncomment after placing your favicon in /public 
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); 
app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(cookieParser()); 
app.use(express.static(path.join(__dirname, 'public'))); 

app.use('/', routes); 
app.use('/users', users); 

// catch 404 and forward to error handler 
app.use(function(req, res, next) { 
    var err = new Error('Not Found'); 
    err.status = 404; 
    next(err); 
}); 

// error handlers 

// development error handler 
// will print stacktrace 
if (app.get('env') === 'development') { 
    app.use(function(err, req, res, next) { 
    res.status(err.status || 500); 
    res.render('error', { 
     message: err.message, 
     error: err 
    }); 
    }); 
} 

// production error handler 
// no stacktraces leaked to user 
app.use(function(err, req, res, next) { 
    res.status(err.status || 500); 
    res.render('error', { 
    message: err.message, 
    error: {} 
    }); 
}); 

+0

あなたsocket.ioコードファイルのパスとは何ですか?どこapp.js –

+0

は、私は現在試みとして根にあるように、それを変更しています。私はエラーのペーストビンを取得しています。 –

+0

コードを表示しますか?どうやって使ってるの? app.jsとeventScokets.js –

答えて

0

ますこの

var io = require('socket.io')(server); 

ようioオブジェクトを取得し再今、あなたは、コードは、このオブジェクトにlistnersを追加できるように、ソケットモジュールにこのioオブジェクトを渡す必要があります。あなたがioオブジェクトではなく、server obejectを渡す必要があるためapp.jsで

require('./mysockets')(io); 

require('./mysockets')(server); 

を交換してください。

そしてmysockets.jsファイル内

module.exports = function(io) { 
    io.sockets.on("connection", function(socket){ 
      // Broadcasts a message 
      socket.on("send message", function(data){ 
      io.sockets.emit("new message", {msg: data, user: socket.username}); 
      }); 

     // other listeners will go here. 
    }); 
}; 
+0

非常に感謝しています。私はどこが間違っていたかを見ます:) –

+0

大歓迎:) –

関連する問題