簡體   English   中英

無法從socket.io中的Express路由發出事件

[英]Can't emit event from Express route in socket.io

我已經在集群Express(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')
});

我沒有任何錯誤,只是默默地失敗了。 我覺得這是我根本沒看到的相當基本的東西。 我該怎么做才能使這項工作?

您調用了錯誤的方法,請嘗試以下操作:

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

這應該很奇怪,我已經創建了一個可以正常工作的示例,您可以在其中查看如何使用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');
});

原來我必須使用socket.io發射器 ,我不確定它是否與我也在使用集群這一事實有關,但是現在可以使用了!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM