如何在节点js上实时发送数组?

How to send array in real time on node js?

我正在研究爬虫 npm。根据域的不同,可以有 n 个 URL。现在,我想实时发送 URL。一旦一个 url 在数组中更新,它应该触发一个事件并将数据发送到前端。

在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。

  1. 我安装了nuxt-socket.io插件(如果你用的是vue/react/angular那么你需要根据安装)
  2. 我将 socket.io 配置为 socket.io.js 文件中的插件
  3. 完成!现在,使用 socket.on 监听所有传入的 messages/URLs 和 socket.emit 从前端向后端发送值。同样适用于后端。