如何在节点js上实时发送数组?
How to send array in real time on node js?
我正在研究爬虫 npm。根据域的不同,可以有 n 个 URL。现在,我想实时发送 URL。一旦一个 url 在数组中更新,它应该触发一个事件并将数据发送到前端。
- Res.send returns数据一次然后显示header设置错误。一旦执行res.send,其他值就不能再发送了,但是我设法在处理完每条路由后发送数据,但我想实时发送。
在node.js中有什么方法可以实时发送数组吗?这里的 val 是来自另一个爬虫的 URL 数组。
代码如下:
promise.then( (val) => {
var count = 0;
let urlsarray = [];
var element = {
title: '',
url: '',
description: '',
robots: '',
pagesize: '',
h1: '',
h2: '',
protocol: '',
keywords: ''
};
var c = new Crawler({
maxConnections : 20,
// This will be called for each crawled page
callback : function (error, response, done) {
if(error){
console.log(error);
}else{
var $ = response.$;
element.title = $("title").text();
element.url = response.options.uri;
element.description = $("meta[name=description]").attr("content");
element.robots = $("meta[name=robots]").attr("content");
element.pagesize = response.body.length;
element.h1 = $("h1").text();
element.h2 = $("h2").text();
element.protocol = response.options.protocol;
element.keywords = $("meta[name=keywords]").attr("content");
var x = urlsarray.length;
urlsarray.push(element);
if(val.length === urlsarray.length){
console.log(urlsarray.length);
return res.send(urlsarray);
}
}
done();
}
});
c.queue(val);
});
如果您正在处理实时数据,那么我建议您研究一下 websocket 协议。
socket.io 是一个很棒的框架,用于将实时数据发送到客户端或从客户端发送到服务器。
如果你想要可视化教程:create a messaging app
我遇到了同样的问题,我使用了 socket.io 和 nuxt.js。
- 我安装了nuxt-socket.io插件(如果你用的是vue/react/angular那么你需要根据安装)
- 我将 socket.io 配置为 socket.io.js 文件中的插件
- 完成!现在,使用 socket.on 监听所有传入的 messages/URLs 和 socket.emit 从前端向后端发送值。同样适用于后端。
我正在研究爬虫 npm。根据域的不同,可以有 n 个 URL。现在,我想实时发送 URL。一旦一个 url 在数组中更新,它应该触发一个事件并将数据发送到前端。
- Res.send returns数据一次然后显示header设置错误。一旦执行res.send,其他值就不能再发送了,但是我设法在处理完每条路由后发送数据,但我想实时发送。
在node.js中有什么方法可以实时发送数组吗?这里的 val 是来自另一个爬虫的 URL 数组。
代码如下:
promise.then( (val) => {
var count = 0;
let urlsarray = [];
var element = {
title: '',
url: '',
description: '',
robots: '',
pagesize: '',
h1: '',
h2: '',
protocol: '',
keywords: ''
};
var c = new Crawler({
maxConnections : 20,
// This will be called for each crawled page
callback : function (error, response, done) {
if(error){
console.log(error);
}else{
var $ = response.$;
element.title = $("title").text();
element.url = response.options.uri;
element.description = $("meta[name=description]").attr("content");
element.robots = $("meta[name=robots]").attr("content");
element.pagesize = response.body.length;
element.h1 = $("h1").text();
element.h2 = $("h2").text();
element.protocol = response.options.protocol;
element.keywords = $("meta[name=keywords]").attr("content");
var x = urlsarray.length;
urlsarray.push(element);
if(val.length === urlsarray.length){
console.log(urlsarray.length);
return res.send(urlsarray);
}
}
done();
}
});
c.queue(val);
});
如果您正在处理实时数据,那么我建议您研究一下 websocket 协议。
socket.io 是一个很棒的框架,用于将实时数据发送到客户端或从客户端发送到服务器。
如果你想要可视化教程:create a messaging app
我遇到了同样的问题,我使用了 socket.io 和 nuxt.js。
- 我安装了nuxt-socket.io插件(如果你用的是vue/react/angular那么你需要根据安装)
- 我将 socket.io 配置为 socket.io.js 文件中的插件
- 完成!现在,使用 socket.on 监听所有传入的 messages/URLs 和 socket.emit 从前端向后端发送值。同样适用于后端。