【问题标题】:How to modularize socket.io to multiple pages如何将 socket.io 模块化到多个页面
【发布时间】:2015-02-25 21:58:29
【问题描述】:

我正在尝试使用 socket.io 和 express。 是否可以在 express 应用程序中初始化 routes/index.js 内的套接字?

我尝试要求 app.js 并听取了它,但没有成功。

var app = require('../app.js');
var io = require('socket.io')(app);

如果以上都做不到,如何在app.js中初始化io变量,然后在index.js中使用?

我想了解的是如何模块化 socket.io

假设我有一个网站,其中两个页面使用套接字。我不想将它们的所有代码都放在 app.js 中。

【问题讨论】:

    标签: node.js express socket.io


    【解决方案1】:

    我找到了解决方案。这不是我想要的,但它会做的。

    Nodejs include socket.io in router page

    如上链接所述。

    //app.js
    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) {
        ...
      });
    };
    

    目前所有的发射现在都发送到 socket.js。但我想把它分成多个文件。

    【讨论】:

      【解决方案2】:

      你需要在io的监听中传递server对象。试试这个。

          var app = require('../app.js');
          app.set('port', process.env.PORT || 3000);
      
          var server = app.listen(app.get('port'), function() {
            console.log('Express server listening on port ' + server.address().port);
          });
      
          var io = require("socket.io").listen(server);
      
          io.on("connection",function(socket){
              console.log("Application connected");
              socket.on('disconnect',function(){
                  console.log("Application Disconnected");
              });
      
              socket.on('some-event',function(meetup){
                  //do something
                  io.emit('some-new-event-to-notify-client',passSomeData);
              });
          });
      

      【讨论】:

      • 我在尝试使用应用程序时遇到错误。它说 app.set('port', process.env.PORT || 3000); ^ TypeError: undefined is not a function (^ 指向集合)
      • 能否请您粘贴您的 app.js,让我看看里面有什么。
      猜你喜欢
      • 2012-08-22
      • 2017-12-14
      • 2023-03-24
      • 1970-01-01
      • 2015-06-21
      • 1970-01-01
      • 2018-02-15
      • 2017-06-14
      • 1970-01-01
      相关资源
      最近更新 更多