52580587zl

WebSocket

WebSocket实现了,在客户端和服务端上建立了一个长久的连接,两边可以任意发数据嗨皮

当然如果知道的更深一层的话,要知道它属于应用层的协议,它基于TCP传输协议,并复用HTTP的握手通道

Websocket的优势。需要安装ws包  npm i ws -S

1.支持双向通信,实施性更强

  2.更好的二进制支持

3.较少的控制开销(连接创建后,ws客户端、服务端进行数据交换时,协议控制的数据包头部较少)

基本用法:

// 创建一个index.html文件
// 下面直接写WebSocket
// 只需要new一下就可以创建一个websocket的实例
// 我们要去连接ws协议
// 这里对应的端口就是服务端设置的端口号9999
//要连接的服务器
let ws = new WebSocket(\'ws://10.211.55.13:9999\');
// onopen是客户端与服务端建立连接后触发
ws.onopen = function () {
    ws.send(\'哎呦,不错哦\');
};
// onmessage是当服务端给客户端发来消息的时候触发
ws.onmessage = function (res) {
    console.log(res); // 打印的是MessageEvent对象
    // 真正的消息数据是 res.data
    console.log(res.data);
};

 

创建一个js文件

// =============================================

// 开始创建一个websocket服务
const Server = require(\'ws\').Server;

// 这里是设置服务器的端口号,和上面的3000端口不用一致
const ws = new Server({
    port: 9999,
    host: \'192.168.13.56\'
});

 

// 监听服务端和客户端的连接情况
ws.on(\'connection\', function (client) {

    // 监听客户端发来的消息
    client.on(\'message\', function (msg) {
        console.log(\'收到客户端发来的消息:\' + msg); // 这个就是客户端发来的消息
        // 来而不往非礼也,服务端也可以发消息给客户端
        client.send(`这里是服务端对你说的话: ${msg}`);
    });

});

 

这样就搭了一个后台服务了,打开 index.html   在控制台就可以看到消息了

 

Nodejs做爬虫

爬下来的数据放到之前的文章上传里面

let axios = require(\'axios\');

let {Article} = require(\'../models\')

// https://api.readhub.cn/topic?lastCursor=273387&pageSize=20 想要爬取的数据地址
let url = \'https://api.readhub.cn/topic\'
axios.get(url,{params:{pageSize:20,lastCursor:273387}})
.then(res=>{
    console.log(res.data.data)
    res.data.data.forEach(news=>{
        let art = new Article({title:news.title,body:news.summary})
        art.save()
    })

    

})

 

在终端中运行这个文件,即可实现爬虫

 npm i cheerio -S

运用cheerio进行爬虫,语法是和jQuery的语法几乎相同,代码如下

let axios = require(\'axios\');

let {Article} = require(\'../models\')

let cheerio = require(\'cheerio\')

// https://api.readhub.cn/topic?lastCursor=273387&pageSize=20

let url = \'https://bbs.hupu.com/selfie\'

axios.get(url)

.then(res=>{

    // console.log(res.data)

    $ = cheerio.load(res.data);

    $(\'.truetit\').each(function(i,v){

        console.log($(v).text());

    })

})

 

分类:

技术点:

相关文章: