无法在socket.io中从Express路由发出事件

时间:2015-06-22 10:01:54

标签: javascript node.js express socket.io socket.io-1.0

我已经在我的集群快递(4.11)应用程序中设置了socket.io(1.3.5)并使其工作(在我的主app.js文件中)

io.on('connection', function (socket) {
    io.emit('message', 'ja');
});

这个,控制台在浏览器中注销并正常工作。这就是我想要做的事情:

  

我想在服务器端执行操作时发出消息,通知用户有新的内容可供查看。

我将io对象传递给我的路由模块,以便我可以在我的路径中访问它。

当我尝试这个时:

router.post('/entries.json',(req, res, next) => {
    io.emit('message', 'nein')
});

我没有得到任何错误,它只是默默无闻。我觉得它是一种相当基本的东西,我只是没有看到。我能做些什么才能做到这一点?

3 个答案:

答案 0 :(得分:0)

你正在调用错误的方法,试试这个:

io.sockets.emit('message', 'nein');

答案 1 :(得分:0)

它的工作应该很奇怪,我已经创建了一个示例,您可以看到我如何使用io.emit方法向所有连接的套接字发送消息:

var express = require('express');
var app = express();
var server = require('http').Server(app);
var io = require('socket.io')(server);

app.get('/', function(req, res) {
    // you can use io.sockets.emit or io.emit, it is the same.                                                                
    io.emit('message', 'there is something new');
    res.end();
});

io.on('connection', function(socket) {
    console.log('new connection');
});

server.listen(4040, function() {
    console.log('server up and running at 4040 port');
});

答案 2 :(得分:0)

原来我必须使用socket.io emitter,我不确定它是否与我使用集群的事实有关,但它现在有用了!