您好我终于能够设置我的webscraper并将数据导入我的网页:)
然而,我的网页在端口3001上运行,网页刮刀在端口8080上运行,我有点困惑,因为我可以设置一个计时器来在后台更新刮刀?
Index.js
window.addEventListener('mousemove', function(e) {
var evt = e || event;
if (dragging) {
var deltaX = evt.clientX - lastX;
var deltaY = evt.clientY - lastY;
lastX = evt.clientX;
lastY = evt.clientY;
marginLeft += deltaX;
marginTop += deltaY;
canvas.style.marginLeft = marginLeft + "px";
canvas.style.marginTop = marginTop + "px";
}
e.preventDefault();
}, false);
现在的工作方式是我需要导航到http://178.62.253.206:8080来更新网络抓取工具。
我希望在后台静默更新刮刀
scraper.js
var scraper = require(__dirname + '/scripts/scraper.js');
var express = require('express');
var path = require('path');
var app = express();
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1:27017/test";
app.use(express.static(__dirname + '/public'));
// set the view engine to ejs
app.set('view engine', 'ejs');
// index page
app.get('/', function(req, res) {
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("mydb");
dbo.collection("customers").find({}).toArray(function(err, result) {
if (err) throw err;
res.render('pages/index', {
result: result,
});
db.close();
});
});
});
app.listen(3001);
console.log('navigate to: http://178.62.253.206:3001');
frederik
答案 0 :(得分:2)
我看到三个选项:
Differences between websockets and long polling for turn based game server
Websockets
在2018年,我建议使用websockets,因为它的CPU密集度更低,更简单。 Socket.io将非常适合您的需求。
在服务器端,您可以每2秒向所有连接的客户端广播更新的网络刮板数据。
setInterval(function(){
data = updateData();
io.sockets.emit('webscraper data', data);
}, 1000);
在客户端,您可以捕获该事件,并更新您的页面。
socket.on('webscraper data', function(data){
$('#data').... // udpate dom here
});
这是一个指向socket.io的基本聊天教程的链接,可以让您启动并运行:https://socket.io/get-started/chat/
长轮询
以下是使用快速EventEmitter进行长轮询的示例:Node.js: Long-polling with EventEmitter and Express 4.x | Catching request close