express4 + socket.io 如何在connection的回调外边使用socket.emit方法

app.js

    var sockect = require('./socket/server')
    var users = require('../router/users')
    
    app.use('/users', users); //路由
    
    var server = app.listen(9000, function () {
        console.log('server start');
    });
    
    sockect(server); //启动socket

server.js

'use strict';

module.exports = function(server) {
    var io = require('socket.io').listen(server);
    io.sockets.on('connection', function (socket) {
        //如何将这里的socket暴露给其他地方的js方法里使用socket.emit ?
    });
    return io;

};

上面是我目前的结构,希望在users里面的逻辑里触发emit方法,google了很多,也没有找到有什么办法可以将参数socket传递出去,不然的话所有逻辑只要涉及到socket.emit的都要写在connection的回调里..

阅读 4.2k
4 个回答

server.js文件中:

var users = require('../router/users')
module.exports = function(server) {
    var io = require('socket.io').listen(server);
    io.sockets.on('connection', function (socket) {
        //如何将这里的socket暴露给其他地方的js方法里使用socket.emit ?
        users.doSomething(socket);
    });
    return io;

};

然后在users.js写业务逻辑

我也遇到这个问题,求解

我也觉得外部调用socket没什么意义。。
而且expresssocket两者走的协议都不一样,
你可以把user的身份信息保存在 局部变量socket的作用域内
通过标识信息来执行相应用户的操作

新手上路,请多包涵

同求解,怎么把那个socket对象暴露出去????

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题