在express controller中发送io.emit的最佳方式

在express controller中发送io.emit的最佳方式,express,socket.io,Express,Socket.io,下面的练习好吗?还有其他更好的方法吗 app.get('/', function (req, res, next) { var data = { product: 'test', price: '90.00' }; res.json(data); io.emit('value', data); }); 如果使用res.render(),它将无法工作,需要超时才能发出数据。您想做什么io.emit(…)将向当前连接到此服务器的所有客户端发送socket.io消息。如果您正

下面的练习好吗?还有其他更好的方法吗

app.get('/', function (req, res, next) {
    var data = { product: 'test', price: '90.00' };
    res.json(data);
    io.emit('value', data);
});

如果使用res.render(),它将无法工作,需要超时才能发出数据。

您想做什么
io.emit(…)
将向当前连接到此服务器的所有客户端发送socket.io消息。如果您正试图这样做,那么
io.emit(…)
是正确的方法
res.render()
res.json()
用于执行完全不同的操作。事实上,你甚至提到
res.render()
io.emit()
作为备选方案,这让我想知道你在尝试做什么(因为它们做的事情非常不同)。我只想向所有客户机发送消息,但没有res.json或res.render,页面将永远循环…您必须从http请求返回一些响应,否则浏览器仍将等待响应。只需执行
res.end()
即可完成响应,无需发送任何数据。