我在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