[英]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.