Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.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
Node.js NowJs服务器与web服务器不同_Node.js_Nowjs Sockets - Fatal编程技术网

Node.js NowJs服务器与web服务器不同

Node.js NowJs服务器与web服务器不同,node.js,nowjs-sockets,Node.js,Nowjs Sockets,我在玩nodejs,特别关注nowjs 我现在已经在一个运行节点的服务器上启动并运行了,我有一个单独的web服务器。我成功地让节点服务器返回客户端脚本,并在web服务器上引用了该脚本。这将返回一个200响应代码,看起来一切正常。然而,我得到javascript错误,告诉我“现在”是未定义的。据我所知,“now”变量应该可以通过客户端脚本使用,但事实似乎并非如此。有人知道这种设置是否可行吗?因此,设置类似于下面的伪代码 //Server 1 node.com if(request.url ==

我在玩nodejs,特别关注nowjs

我现在已经在一个运行节点的服务器上启动并运行了,我有一个单独的web服务器。我成功地让节点服务器返回客户端脚本,并在web服务器上引用了该脚本。这将返回一个200响应代码,看起来一切正常。然而,我得到javascript错误,告诉我“现在”是未定义的。据我所知,“now”变量应该可以通过客户端脚本使用,但事实似乎并非如此。有人知道这种设置是否可行吗?因此,设置类似于下面的伪代码

 //Server 1 node.com
 if(request.url === '/nowjs/now.js'){
      var file = 'path_to_clientlib/now.js';
  fs.readFile(file, function(e, data) {

        if (e) {
           throw e;
        }

         response.writeHead(200,{'Content-Type': 'application/javascript'});
          response.end(data);
}
和server.com

   <script src="/jquery.js"></script>
   <script src="http://node.com/nowjs/now.js"></script> <!-- This is returned properly -->
   <script>
   $(document).ready(function(){

    now.receiveMessage = function(name, message){
      $("#messages").append("<br>" + name + ": " + message);
    }

   $("#send-button").click(function(){
     now.distributeMessage($("#text-input").val());
     $("#text-input").val("");
   });

   now.name = prompt("What's your name?", "");

   });
   </script>

  <div id="messages"></div>
  <input type="text" id="text-input">
  <input type="button" value="Send" id="send-button">

$(文档).ready(函数(){
now.receiveMessage=函数(名称、消息){
$(“#消息”)。追加(“
”+name+”:“+message”); } $(“#发送按钮”)。单击(函数(){ now.distributeMessage($(“#文本输入”).val(); $(“#文本输入”).val(“”); }); now.name=prompt(“你叫什么名字?”,”); });

控制台立即返回“now”(现在)未定义首先有足够的模块提供静态文件服务支持,但是如果您想手动提供文件服务,我会这样做

var mime = require('mime')   // Get mime type based on file extension. use "npm install mime"
  , util = require('util')
  , fs = require('fs');

function serveFile(filename, res) {
  var filePath = process.cwd() + filename;
  var stat = fs.statSync(filePath);

  res.writeHead(200, {
     'Content-Type':mime.lookup(filePath),
     'Content-Length':stat.size
  });

  var readStream = fs.createReadStream(filePath);

  return util.pump(readStream, res);
}

// Your code...
或者在或上查看模块节点静态

关于如何使用NowJS()

在服务器上

var httpServer = require('http').createServer(function(req, response){ 

  // See code above how to serve static files...

});

httpServer.listen(8080);

var nowjs = require("now");
var everyone = nowjs.initialize(httpServer);

everyone.now.logStuff = function(msg){
  console.log(msg);
}
论客户

<script type="text/javascript" src="http://localhost:8080/nowjs/now.js"></script>

<script type="text/javascript">
  now.ready(function(){
    // "Hello World!" will print on server
    now.logStuff("Hello World!");
  });
</script>

now.ready(函数(){
//“Hello World!”将在服务器上打印
现在。logStuff(“你好,世界!”);
});

Hi,虽然文件服务可以用另一种方式完成,但这并不是我真正遇到的问题。javascript文件得到了正确的服务,但是当客户端脚本正确返回时,另一个网站上的“now”总是未定义的。无法跨域执行此操作吗?@TommyBs您现在是否可以将Initialize作为全局函数使用?否则,请共享指向您的nowjs版本的链接。和这个版本一样吗@TommyBs如果您阅读源代码,您将看到没有“now”变量添加到全局范围。只添加了window.nowInitialize,这是一个需要uri和选项的函数。使用nowjs文档中的代码查看我的更新…@TommyBs如果您查看示例页面上的now.js文件,您将看到该脚本文件的最后一行是。服务器端的“window.now=nowInitialize(“//nowjs.com:3000”,{});”没有变量everyone=nowjs.initialize(server);everyone.now.distributeMessage=函数(消息){everyone.now.receiveMessage(this.now.name,message);};