Javascript 在路由中使用socket.io

Javascript 在路由中使用socket.io,javascript,angularjs,node.js,sockets,Javascript,Angularjs,Node.js,Sockets,我在angular应用程序和服务器之间使用socket.io没有任何问题,但我不知道如何在路由中使用socket.io 以下是我迄今为止所做的: app.js 正如我所说,它是有效的 现在我想在我的一条路由中使用socket.io,从路由器加载的路由: require('./app/my.routes')(app,io);//i've tried to use it this way my.routes.js 现在我犯了这个错误 io.sockets.emit('socket.io :: su

我在angular应用程序和服务器之间使用socket.io没有任何问题,但我不知道如何在路由中使用socket.io

以下是我迄今为止所做的:

app.js 正如我所说,它是有效的

现在我想在我的一条路由中使用socket.io,从路由器加载的路由:

require('./app/my.routes')(app,io);//i've tried to use it this way
my.routes.js 现在我犯了这个错误

io.sockets.emit('socket.io :: sucessfully passed from app to router')
  ^

TypeError: Cannot read property 'sockets' of undefined
我肯定做错了什么,但我不知道是什么。 有什么想法吗

我也试过了 应用程序集('io',io) 在app.js和 app.get('io')) 但它还是失败了

解决方案 最后,我找到了解决办法

app.io = io.sockets.on('connection', function (socket) {
socket.on('server', function (data) {
    log.info(data);
});
socket.emit('client', {
    action: "alert",
    text: 'test from socket io'
  });
});;

现在它链接到应用程序,我可以在任何地方使用它。

您可以在express配置文件中设置套接字io实现,并将“io”对象作为变量传递到应用程序中

app.io = io;
我们的想法是这样做:

module.exports = function (app){ 
    app.io.sockets.emit('socket.io sucessfully passed from app to router');
}

你的意思是:app.io=io在我的app.js中,然后var x=require(somefile)(app,io),这样我就可以在io.emit(..)之类的文件中使用它了吗?只需传递这个应用程序,因为它已经将io对象引用为require(“routes”)(app)好了,现在没有更多的错误,但它是完全静默的,好像什么都没发生。奇怪。我会继续调查。测试如果你让它工作(在服务器上)可能你在客户端有另一个问题。看看这个答案多亏了你,我找到了解决方案。后期编辑
app.io = io;
module.exports = function (app){ 
    app.io.sockets.emit('socket.io sucessfully passed from app to router');
}