我在Node中构建跟踪系统,需要一些帮助来理解使用跟踪脚本的第三方将如何连接到Node应用程序。Node.JS上的跟踪系统
最初,我已经设置了一个页面,使用Socket.io连接到应用程序,但该解决方案似乎只在客户端页面托管在节点服务器上才起作用。因此,例如在第三方网站,他们将有:
该脚本将收集来自网站的数据,然后通过socket.io连接到应用程序,但我似乎不能得到任何回应,因为该应用程序正在监听来自应用程序本身的index.html文件的请求,而不是来自tracker.js脚本。
这里是我想通过运行应用程序的流程:
$.getScript('/socket.io/socket.io.js', function(data){
var socket = io.connect('http://node.appserver.com:8080');
socket.emit('adTracker',
{ adServer: 'datalunk', zone : 'top_home', referingURL : 'comple.com' }
);
});
然后该应用程式:
的tracker.js将使用后续连接看起来像这样:
var app = require('http').createServer(handler)
, io = require('socket.io').listen(app)
, fs = require('fs')
app.listen(8080);
io.configure(function() {
io.set('authorization', function (handshakeData, callback) {
if (handshakeData.xdomain) {
callback('Cross-domain connections are not allowed');
} else {
callback(null, true);
}
});
});
function handler (req, res) {
fs.readFile(__dirname + '/index.html',
function (err, data) {
if (err) {
res.writeHead(500);
return res.end('Error loading index.html');
}
res.writeHead(200);
res.end(data);
});
}
io.sockets.on('connection', function (socket) {
socket.on('adTracker', function (data) {
var adRequestData = data;
var pass = ["bigbooks"];
var databaseUrl = "username:[email protected]:10006/node-test";
var collections = ["cmnads"]
var db = require("mongojs").connect(databaseUrl, collections);
db.cmnads.insert({adRequest : adRequestData}, {$set: {password: pass}}, function(err, updated) {
if(err || !updated) console.log("User not updated");
else console.log("User updated");
});
});
});
有人可以给我一些关于如何将我们的网站连接到实际的Node应用程序的见解吗?
我敢肯定,socket.io方法将违反跨站点浏览器规则,这使得您的建议跟踪图像值得赞赏。 – mjhm
不,socket.io可以跨域使用。在每个浏览器中(你可以在socket.io常见问题解答中看到它)。 – hereandnow78
谢谢,我的立场是正确的。 – mjhm