Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript NodeJS应用程序仅返回Socket.io欢迎消息_Javascript_Node.js_Websocket_Socket.io - Fatal编程技术网

Javascript NodeJS应用程序仅返回Socket.io欢迎消息

Javascript NodeJS应用程序仅返回Socket.io欢迎消息,javascript,node.js,websocket,socket.io,Javascript,Node.js,Websocket,Socket.io,我有一个跟踪应用程序,该应用程序由我们网络中的其他站点访问的节点构建。他们将通过html文件的头部访问应用程序,如下所示: <title>Test</title> <meta name="generator" content="TextMate http://macromates.com/"> <script src="http://mynetwork.com:1337/tracker.js?pid=publisher1&ps=home">

我有一个跟踪应用程序,该应用程序由我们网络中的其他站点访问的节点构建。他们将通过html文件的头部访问应用程序,如下所示:

<title>Test</title>
<meta name="generator" content="TextMate http://macromates.com/">
<script src="http://mynetwork.com:1337/tracker.js?pid=publisher1&ps=home"></script>
</head>
<body>
app.js文件如下所示:

(function(document, onload){

  var io = document.createElement('script');
  io.src = "//cdn.socket.io/stable/socket.io.js";
  io.setAttribute('async', 'true');
  if ( typeof onload === 'function') {
    io.onloadDone = false;
    io.onload = function() {
        io.onloadDone = true;
        onload();
    };
    io.onreadystatechange = function() {
        if ( "loaded" === io.readyState && !io.onloadDone ) {
            io.onloadDone = true;
            io.onload();
        }
    };
  }
  (document.getElementsByTagName('head') || document.getElementsByTagName('body'))[0].appendChild(io);

});

(document, function(){
  var socket = io.connect('http://mynetwork.com:1337');
   socket.emit('adTracker', 
    { adServer: 'datalunk', adZone : 'top_home', referingURL : 'site.com' } 
  );

   socket.on('entrance', function(){
    console.log('Response is:' + data.message);
   });
});
var io = require('socket.io');
var tracker = io.listen(1337);

tracker.configure(function () {
    tracker.set('authorization', function (handshakeData, callback) {
        if (handshakeData.xdomain) {
            callback('Cross-domain connections are not allowed');
        } else {
        callback(null, true);
        }
    });
});


tracker.sockets.on('connection', function (socket) {
  socket.on('entrance', {message: 'connection has been made to app.js'});
  socket.on('adTracker', function (data) {
  var adRequestData = data;
var pass = ["bigbooks"];
var databaseUrl = "user:pass@linus.mongohq.com:10006/node-test";
var collections = ["mads"]
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");
});
  });
});
谁能告诉我为什么我会在第1行收到socket.io欢迎消息和错误,以及如何解决它

(function(document, onload){

  var io = document.createElement('script');
  // rest of code
});

(document, function(){
 // rest of code
   });
});
应该是

(function(document, onload){

  var io = document.createElement('script');
  // rest of code
})(document, function(){
 // rest of code
   });
});
您使用了一个应该调用的匿名函数(但您没有这样做)

正确的语法是(对于更简单的示例):

但是,您可以:

(function(a) {console.log(a)});
('Hello World');

确保服务器安装了最新的稳定版本的节点。根据官方网站,目前为v0.8.16

另外,如果socket.io服务器正在运行,那么我相信您应该能够从中包含socket.io.js

检查节点版本是否是问题根源的最快方法是安装节点版本管理器,然后安装v0.8.16,最后再次运行socket.io服务器

wget -qO- https://raw.github.com/creationix/nvm/master/install.sh | sh
nvm install v0.8.16
nvm use 0.8.16
node yourSocketIOserver.js

我修改了匿名函数,但它似乎没有解决意外的标识符错误,也没有提供从Welcome to Socket.IO消息返回的更改。还有其他建议吗?错误在第1行。当从发布者/第三方网站上的HTML文件调用tracker.js脚本时,它会出现。第1行是
(函数(文档,onload){
?对,第1行是匿名函数,但当加载chrome开发工具时,资源会显示欢迎消息,而不是脚本。哪个是“欢迎消息”?如果您没有看到代码,则不会加载任何代码。
wget -qO- https://raw.github.com/creationix/nvm/master/install.sh | sh
nvm install v0.8.16
nvm use 0.8.16
node yourSocketIOserver.js