Node.js在路由器页面中包含socket.io [英] Nodejs include socket.io in router page

查看:47
本文介绍了Node.js在路由器页面中包含socket.io的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个快速节点应用程序,并且我试图通过不在app.js中包含所有socket.io内容来保持代码整洁

I have an express node app, and I'm trying to keep my code neat by not having all the socket.io stuff in app.js

我不知道解决此问题的最佳方法.这是我最初的想法,感觉好像不是最干净的

I don't know the best way to go about this. Here is my initial thought which doesn't feel like the cleanest one

// 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);

和路线

// 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...
        }
    }

我觉得我已经很近了,但是还不很远

I feel like I'm close but not quite there

推荐答案

我不知道我是否读对了,但似乎您是在对/,坦率地说,我对此感到有些惊讶.

I don't know if I'm reading that right but it looks like you are starting a socket server on every request for /, which I'm frankly a little surprised works at all.

这是我从app.js中分离出socket.io代码的方法(使用与2.x有点不同的express 3.x):

This is how I'm separating out the socket.io code from app.js (using express 3.x which is a bit different than 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) {
    ...
  });
};

希望有帮助!

这篇关于Node.js在路由器页面中包含socket.io的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆