赞
踩
2018年1月22日
欢迎来到的Altaba的博客
众所周知node是打破前端壁垒最快捷的途径,项目开发中需要写一个nodejs+express+mongodb记录浏览网页的信息,但是由于公司前期未计划到这步,所以有些数据需要调用后端同事的api把一些MongoDB数据实时传入后台,故我这边nodejs中要不定时的做ajax请求调用外部的api(非nodejs API),实现如下:
利用nodejs固有的“http”模块中request()方法
//对比联系人创建时间和当前时间差在两分钟内 let screenLandContacts = function (data) { //let now = new Date(); let newData = []; let preTime = new Date().getTime(); data.forEach((item)=> { // console.log(item.createtime); // console.log(preTime); let initTime = preTime - item.createtime; // console.log(initTime); if(initTime < 120000){ newData.push({ skey:item.skey, contact_info:item.contact_info }) } }); return newData; } //获取所有登录的联系人信息 let searchLandContacts = function () { contactDB.findAll().then((data)=> { let newData = screenLandContacts(data); //let newDataL = JSON.stringify(newData); // let postData = querystring.stringify({ // 'contacts' : newData ? newData : '[]' // }); let postData = { contacts : JSON.stringify(newData) }; let options = { hostname: 'rest_t.soup.ai', //port: 80, path: '/contact/online', method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Content-Length': Buffer.byteLength(formatParams2(postData)) } }; let req = nodeHttp.request(options, (res) => { //console.log(`STATUS: ${res.statusCode}`); //console.log(`HEADERS: ${JSON.stringify(res.headers)}`); res.setEncoding('utf8'); res.on('data', (chunk) => { console.log(`BODY: ${chunk}`); }); res.on('end', () => { console.log('No more data in response.'); }); }); req.on('error', (e) => { console.log(`problem with request: ${e.message}`); }); // write data to request body console.log(postData); //格式化参数 req.write(formatParams2(postData)); req.end(); }, (err)=> { dbLog.error('find contact error: ' + err); }); }; //循环发送 let sendWsMessage = function () { setInterval(function () { searchLandContacts(); },15000) }; sendWsMessage();
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。