【问题标题】:Using socket.io modules in other JS files在其他 JS 文件中使用 socket.io 模块
【发布时间】:2015-06-11 00:25:41
【问题描述】:

以下是我为socket.io功能配置的app.js,一切正常,但现在我想在同一个项目的另一个js文件中使用这个socket功能,如何实现?

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

server.listen(8080);

app.get('/', function (req, res) {
  res.sendfile(__dirname + '/index.html');
});

io.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });
  socket.on('my other event', function (data) {
    console.log(data);
  });
});

【问题讨论】:

    标签: node.js express socket.io


    【解决方案1】:

    只需在要使用socket.io 模块的每个文件中写入var io = require('socket.io')(server);。如果您想创建共享功能,请在您的应用中使用socket.io 创建另一个模块,即:

    var io = require('socket.io')(server);
    
    module.exports = function(options) {
      // your code here
    }
    

    如果它不是您问题的答案,请更具体。

    【讨论】:

    • 如果我写 var io = require('socket.io')(server);在我想使用 socket.io 模块的每个文件中,我得到 ReferenceError: server is not defined 错误
    • 好吧,你传入了一个变量(server),所以你必须完全按照你的例子创建这个变量。所以在其余要求(http,express)之前添加。就像我说的,如果你愿意,你可以创建返回给你已经创建的 socket.io 对象的模块函数。否则,您必须在每个文件中插入所有 3 条语句。编辑:首先阅读 node.js 模块:nodejs.org/docs/latest/api/modules.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-30
    • 1970-01-01
    • 2018-07-15
    • 1970-01-01
    • 2016-12-31
    • 2017-09-03
    • 2013-02-11
    相关资源
    最近更新 更多