Nodejs包括路由器页面中的socket.io.

Mar*_*nas 3 router node.js express socket.io

我有一个快速节点应用程序,我试图保持我的代码整洁,因为没有在app.js中的所有socket.io东西

我不知道最好的办法.这是我最初的想法,感觉不像最干净的想法

// app.js
var express = require('express')
    , app = express()
    , server = require('http').createServer(app)
    , url = require('url')
    , somePage = require('./routes/somePage.js')
    , path = require('path');

    app.configure(function(){...});

    app.get('/', somePage.index);
Run Code Online (Sandbox Code Playgroud)

和路线

// somePage.js
    exports.index = function (req, res, server) {
        io = require('socket.io').listern(server)
        res.render('index',{title: 'Chat Room'})

        io.sockets.on('connection', function(socket) {
            ...code...
        }
    }
Run Code Online (Sandbox Code Playgroud)

我觉得我很亲密,但不太相似

lem*_*nad 9

我不知道我是否正确阅读,但看起来你正在为每个请求启动一个套接字服务器/,我坦率地说它有点惊讶.

这就是我从app.js中分离出socket.io代码的方法(使用快速3.x,它与2.x略有不同):

// app.js
var express = require('express');
var app = express();

var server_port = config.get('SERVER_PORT');
server = http.createServer(app).listen(server_port, function () {
    var addr = server.address();
    console.log('Express server listening on http://' + addr.address + ':' + addr.port);
});

var sockets = require('./sockets');
sockets.socketServer(app, server);


// sockets.js
var socketio = require('socket.io');
exports.socketServer = function (app, server) {
  var io = socketio.listen(server);

  io.sockets.on('connection', function (socket) {
    ...
  });
};
Run Code Online (Sandbox Code Playgroud)

希望有所帮助!