【问题标题】:Separating socket.io logic from server file and accessing io.sockets in logic file从服务器文件中分离 socket.io 逻辑并在逻辑文件中访问 io.sockets
【发布时间】:2015-07-25 09:36:42
【问题描述】:

在我的 Nodejs 应用程序的server.js(起点)中,我执行以下操作来启动服务器和套接字:

var socket = require('./routes/socket');

var port = process.env.PORT || 9091;

var io = require('socket.io').listen(app.listen(port, function(){
  console.log('Server is listening on port: ' + port);
}));

io.sockets.on('connection', socket);

现在在./routes/socket 我希望能够向所有客户广播,我相信我必须这样做:io.sockets.emit() 与相同的io

问题是我无权访问该文件中的io

// export function for listening to the socket
var store = (function(){
    var value = 0;
    var getValue = function() {
        return value;
    };
    var addValue = function(toAdd) {
        value += toAdd.messages;
        return value;
    };
    return {
        getValue: getValue,
        addValue: addValue
    };
}());

module.exports = function (socket, io) {
    socket.emit('value', {
        value: store.getValue()
    });
    // broadcast a user's message to other users
    socket.on('getValue', function (data) {
        socket.emit('value', {
            value: store.getValue()
        });
    });

    socket.on('addValue', function (data) {
        store.addValue(data);
        io.sockets.emit('value', {
            value: store.getValue()
        });
    });
}; 

有什么想法吗?

【问题讨论】:

    标签: javascript node.js socket.io


    【解决方案1】:

    在您最后的server.js 文件中,它应该是:

    io.sockets.on('connection', function (sock) {
        socket(sock, io);
    });
    

    【讨论】:

      猜你喜欢
      • 2012-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-09
      • 2013-12-15
      • 2014-09-04
      • 1970-01-01
      相关资源
      最近更新 更多