javascript - 将socket.io逻辑与服务器文件分离并访问逻辑文件中的io.sockets

标签 javascript node.js socket.io

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

问题是我无权访问 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()
        });
    });
}; 

有什么想法吗?

最佳答案

在您的 server.js 文件末尾,它应该是:

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

关于javascript - 将socket.io逻辑与服务器文件分离并访问逻辑文件中的io.sockets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31621932/

相关文章:

javascript - 调用jquery/ajax函数时出错

git - 无法在heroku上更新应用程序: "git add ." gives error

node.js - 自动重新加载 Koa 服务器

node.js - Socket.io 打开数百个连接

websocket - 支持 Android 上的 Websocket

javascript - 如何获取任何 Android 手机的 MAC 地址?

Javascript,填充数组不重复字符串

node.js - 将 nodejs 应用程序部署到 heroku

无法访问结构 ifreq

javascript - 尝试找到使用 html2canvas 制作 OpenLayers map 屏幕截图的最佳解决方案。 map 元素丢失 css 类,图像无法查看