Node で追跡システムを構築していますが、追跡スクリプトを使用するサード パーティが Node アプリに接続する方法を理解するための助けが必要です。
最初に、Socket.io を使用してアプリに接続するページをセットアップしましたが、そのソリューションは、クライアント側のページがノード サーバーでホストされている場合にのみ機能するようです。たとえば、サードパーティのサイトでは次のようになります。
そのスクリプトはサイトからデータを収集し、socket.io 経由でアプリに接続しますが、アプリがアプリ自体ではなく index.html ファイルからの要求をリッスンしていたため、応答を返すことができなかったようです。 tracker.js スクリプトから。
アプリを実行したいフローは次のとおりです。
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' }
);
});
次に、アプリは次のようになります。
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:password@linus.mongohq.com: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");
});
});
});
ネットワークサイトを実際のノードアプリに接続する方法について、誰かが私に洞察を与えることができますか?