代码之家  ›  专栏  ›  技术社区  ›  Arian

分离插座。来自服务器文件的io逻辑并访问io。逻辑文件中的套接字

  •  1
  • Arian  · 技术社区  · 11 年前

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

    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

    问题是我无法访问 国际奥委会 在该文件中:

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

    知道吗?

    1 回复  |  直到 11 年前
        1
  •  1
  •   Patrick Roberts Benjamin Gruenbaum    11 年前

    在您的 server.js 文件末尾,应为:

    io.sockets.on('connection', function (sock) {
        socket(sock, io);
    });
    
    推荐文章