我正在使用express.io和我的应用程序。我试图完成以下任务:在我的应用程序中,有一个/products
http路由,它加载静态产品数据并立即返回。还有其他动态产品数据,计算时间更长。客户端不应该等待计算,因此想法是,动态数据通过socket.io以异步方式推送到客户端。我想这样做:
server.get('/products', function(req,res,next) {
products.getProducts(function(products) {
res.send(products);
app.getDynamicProductData(products, function(dynamicData) {
req.updateData = dynamicData;
req.io.route('update_dynamic_product_data');
});
});
});
server.io.route('update_dynamic_product_data', function(req) {
req.io.emit('products_update', req.updateData);
})
不幸的是,这会引发异常TypeError: Object #<Object> has no method 'emit'
在route函数中显示req.io对象返回:
{ broadcast: [Function], respond: [Function], route: [Function], data: {} }
为什么这里缺少emit方法,我怎样才能使它工作?