gpt4 book ai didi

node.js - NowJs 服务器与 Web 服务器不同

转载 作者:太空宇宙 更新时间:2023-11-04 02:43:04 25 4
gpt4 key购买 nike

我正在玩nodejs,特别是在看nowjs

我现在已经在运行 Node 的服务器上启动并运行,并且我有一个单独的 Web 服务器。我成功让 Node 服务器返回客户端脚本,并在 Web 服务器上引用它。这会返回 200 响应代码,一切看起来都很好。但是我收到 JavaScript 错误,告诉我“现在”未定义。据我了解,“现在”变量应该可以通过客户端脚本使用,但情况似乎并非如此。有谁知道这个设置是否可行?因此设置类似于下面的伪代码

 //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">

控制台立即返回“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...

或者查看NPM上的node-static模块或Github

关于如何使用NowJS( from the docs )

在服务器上

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>

关于node.js - NowJs 服务器与 Web 服务器不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11431021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com