Articles of networking抓取

WebPush UnauthorizedRegistration 400尝试从节点Js发送推送通知时出错

我正尝试使用来自NodeJS的Web Push发送推送通知。 以下是我在前端获取订阅的方式: swRegistration.pushManager.subscribe({ userVisibleOnly: true, applicationServerKey: "SOME_APPLICATION_PUBLIC_KEY" })….. 这里是我用来发送推送通知的NodeJS: const webpush = require('web-push'); const options = { vapidDetails: { subject: 'mailto:SOME_MAIL_ID', publicKey: 'SOME_PUBLIC_KEY', privateKey: 'SOME_PRIVATE_KEY' } }; const pushSubscription = {"endpoint":"https://fcm.googleapis.com/fcm/send/SOME_END_POINT","keys{"p256dh":"SOME VALUE","auth":"SOME_VALUE"}}; webpush.sendNotification(pushSubscription, "Test Notification", options) .then(function(response) { console.log(response) }) .catch(function(error) {console.log(error)}); 然后我得到一个400错误。 我已经交叉validation了我的gcm_sender_id和我的服务器密钥。 一切看起来不错,通知在Firefox中testing正常工作,并在Chrome中失败。 这是我得到的错误: name: 'WebPushError', message: 'Received unexpected response code', statusCode: […]

NodeJS交叉通信运行节点

我想开发一个程序,我的NodeJS节点可以在不需要专用主机的情况下来回通信。 所有节点实例都在本地networking上的不同计算机上运行。 例如,我有我的计算机在端口30001上运行一个节点应用程序(并且防火墙不阻止)。 我安装了一个在端口3001上运行另一个节点应用程序的Raspberry Pi。 不需要知道Raspberry Pi和我的电脑的IP地址,他们怎么能find彼此? 仅供参考,我曾尝试使用arp命令,但其caching未更新得足够快。 这是一些预期的行为: mycomputer>node index.js pi>node index.js mycomputer> Found '<pi or IP>' running on port 3001 Sending default greeting 'Welcome to Node friend network. My name is mycomputer' pi> Found '<mycomputer or IP>' running on port 3001 Sending default greeting 'Welcome to Node friend network. My name is pi' […]

在nodejs中对网页的dynamic数据进行报废

通过使用node.js我试图刮一个网页。 为此,我使用cheerio和tinyreq模块。 我的源代码如下: // scrape function function scrape(url, data, cb) { req(url, (err, body) => { if (err) { return cb(err); } let $ = cheerio.load(body) , pageData = {}; Object.keys(data).forEach(k => { pageData[k] = $(data[k]).text(); }); cb(null, pageData); }); } scrape("https://www.activecubs.com/activity-wheel/", { title: ".row h1" , description: ".row h2" }, (err, data) => { […]

快速加载 – 网站每日背景图片

新的networking编程。 我正在使用Unsplash API作为我的网站的背景图片,所以应该每天更改: <div class="background" style="background-image: url(&quot;https://source.unsplash.com/………/daily&quot;);"></div> 现在这是加载缓慢,我不认为我应该直接从客户端HTML调用API。 我想了解如何实现这一点,并使背景图像加载每一次。 我应该使用CDN吗? 如果是的话,我是否需要在我的nodejs服务器上写一份工作,这个服务器每天都会得到照片并存储在CDN中? 或者我应该写一个工作,下载所有可能的图像,上传到S3,然后编写一个API包装,将处理日常变化的逻辑? 基本上,如果从外部API获取背景图像,在我的客户端上加载背景图像的最快捷方式是什么?

Socket.IO手动“断开”和var范围发射?

有人可以解释如何脱节工程? 在我的控制台日志中,断开连接function在客户端离开游戏时被调用两次。 为什么是这样? 当它发生时,似乎playerName的范围在第二个调用中也是已知的,但不是第一个。 这是打这些电话的客户吗? 另外,它如何知道该范围内的playerName,但在send-message它不知道什么是playerName? (1是playerName) Oct 06 11:57:36 overwatchtracker app/web.1: [RECV] Player disconnected: 1 Oct 06 11:57:36 overwatchtracker app/web.1: [RECV] Player disconnected: undefined Oct 06 11:57:29 overwatchtracker app/web.1: [RECV] Message: undefined asdfasdf 这是我的一些代码: const io = socketIO(server) var clients = [] io.on('connection', (socket) => { var playerName; socket.on('login-user', (name) => { playerName = […]

将NodeJS应用程序连接到Estimote的Meshnetworking

我有几个有关Estimote的网状networking的问题,并想知道得到一些帮助,因为我还没有find任何东西。 我有一个专门的三星Artik上运行的Node.js服务器。 这台服务器是否可以直接和网状networking上的信标进行通信,并监听遥测广播? 例如:我家的每个房间都有一个灯塔,它们都连接在一个网状networking中。 我的服务器可以与网状networking进行通信并获取温度,环境光照等数据吗?

使用tinyreq / cheerio有没有办法绕过网站上的证书链?

我试图刮一个网站,我正在使用npm模块tinyreq / cheerio在此博客文章中注明 我想刮的网站使用TLS我遇到下面的错误: Error: self signed certificate in certificate chain at Error (native) at TLSSocket.<anonymous> (_tls_wrap.js:1092:38) at emitNone (events.js:86:13) at TLSSocket.emit (events.js:185:7) at TLSSocket._finishInit (_tls_wrap.js:610:8) at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:440:38) code: 'SELF_SIGNED_CERT_IN_CHAIN' 有没有办法我可以绕过这个节点? 或者我是否必须在脚本中包含实际的证书?

puppeteer:无法加载html元素的整个子对象

在puppeteer中,当我想获取元素的子元素时,我可以获取特定属性(innerHtml,childElementCount …)的值,但不是整个子对象: 例如,我可以获得所有表的textContent const data = await page.evaluate(() => { const tables = Array.from(document.querySelectorAll('table')); return tables.map(table => table.textContent) }); console.log(data); //print me [ "\n\t\tselection requirement\n\t\t", "\n\t\Area \n\t\…]" 但是当我想要整个表对象它返回一个数组与空值: const data = await page.evaluate(() => { const tables = Array.from(document.querySelectorAll('table')); return tables; }); console.log(data); // print me [ {}, {}, {}, {}, {}, {}, {}, {}, […]

NodeJS请求 – login到网站

我很新的JavaScript,我只是想从NodeJS请求login到网站。 本网站需要第一时间访问的信息才能login。 这是我的代码。 var cheerio = require('cheerio'); var loginLink = 'link'; var loginJar = request.jar(); var ltValue = ''; request.get({url: loginLink, jar: loginJar}, function(err, httpResponse, html) { var dat = cheerio.load(html); var arr = dat('input[name="lt"]'); ltValue = arr.attr('value'); arr = dat('input[name="execution"]'); executionValue = arr.attr('value'); /*Post body*/ var loginBody = 'username=' + usn + '&password=' + […]

然后在()后面调用evaluate()

考虑下面的代码片段: nightmare .evaluate(function (resolve){ setTimeout(function () { resolve(null, 1234); }, 1500) }) .then(function (result) { console.log('SUCCESS', result); }) .catch(function (e) { console.log('ERROR', e); }); 假设之前已经初始化了nightmare实例,我还使用了goto()和inject() (这部分代码非常巨大,但是如果需要,我可以尝试清理它以呈现在那里)。 但是我终于得到的结果 – 不是SUCCESS 1234而是SUCCESS 1234 。 我正在做这个实验,并且已经理解,如果在.evaluate() .wait(15000)之前调用.wait(15000) (或者在.evaluate()之后和.evaluate()之前设置一个断点并等待一些时间被触发)代码正如预期的那样工作。 那个代码有什么问题?