1、nodejs 靜態伺服器和http伺服器有什麼區別
參考cnodejs.org上面的靜態伺服器例子,寫了下面的一個nodejs靜態伺服器例子,裡麵包含cache,壓縮,貼代碼如下
/**
* 靜態文件伺服器測試例子
* User: xuwm
* Date: 13-5-17
* Time: 上午8:38
* To change this template use File | Settings | File Templates.
*/
var port=3333;
var http = require("http");
var url = require("url");
var fs = require("fs");
var path = require("path");
var mime = require("./mime").types;
var config = require("./config");
var zlib = require("zlib");
//創建http服務端
var server=http.createServer(function(request,response){
var obj= url.parse(request.url);
response.setHeader("Server","Node/V8");
console.log(obj);
var pathname=obj.pathname;
if(pathname.slice(-1)==="/"){
pathname=pathname+config.Welcome.file; //默認取當前默認下的index.html
}
var realPath = path.join("assets", path.normalize(pathname.replace(/\.\./g, "")));
console.log(realPath) ;
var pathHandle=function(realPath){
//用fs.stat方法獲取文件
fs.stat(realPath,function(err,stats){
if(err){
response.writeHead(404,"not found",{'Content-Type':'text/plain'});
response.write("the request "+realPath+" is not found");
response.end();
}else{
if(stats.isDirectory()){
}else{
var ext = path.extname(realPath);
ext = ext ? ext.slice(1) : 'unknown';
var contentType = mime[ext] || "text/plain";
response.setHeader("Content-Type", contentType);
var lastModified = stats.mtime.toUTCString();
var ifModifiedSince = "If-Modified-Since".toLowerCase();
response.setHeader("Last-Modified", lastModified);
if (ext.match(config.Expires.fileMatch)) {
var expires = new Date();
expires.setTime(expires.getTime() + config.Expires.maxAge * 1000);
response.setHeader("Expires", expires.toUTCString());
response.setHeader("Cache-Control", "max-age=" + config.Expires.maxAge);
}
if (request.headers[ifModifiedSince] && lastModified == request.headers[ifModifiedSince]) {
console.log("從瀏覽器cache里取")
response.writeHead(304, "Not Modified");
response.end();
} else {
var raw = fs.createReadStream(realPath);
var acceptEncoding = request.headers['accept-encoding'] || "";
var matched = ext.match(config.Compress.match);
if (matched && acceptEncoding.match(/\bgzip\b/)) {
response.writeHead(200, "Ok", {'Content-Encoding': 'gzip'});
raw.pipe(zlib.createGzip()).pipe(response);
} else if (matched && acceptEncoding.match(/\bdeflate\b/)) {
response.writeHead(200, "Ok", {'Content-Encoding': 'deflate'});
raw.pipe(zlib.createDeflate()).pipe(response);
} else {
response.writeHead(200, "Ok");
raw.pipe(response);
}
}
}
}
});
}
pathHandle(realPath);
});
server.listen(port);
console.log("http server run in port:"+port);
首先需要在JS文件里創建一個assets的文件夾,裡面放入你要瀏覽的靜態文件,比如,index.html,demo.js等。
運行方式為:在命令行里切換到上面的JS的文件目錄,然後輸入 node JS文件名
2、有人用nodejs做流媒體伺服器嗎
倒是不用全部都自己重寫,媒體解析這塊node有現成的庫 ,可以去搜搜看node ffmpeg,用別人封裝好的ffmpeg來解析,但是在流媒體協議層這一塊好像我沒有搜到node關於rtmp的封裝,不過現成的流媒體伺服器可能有,實在不行就可能需要手動造輪子自己去給node封裝rtmp了
不過最好還是不要用node直接處理流媒體處理和傳輸這一塊,拿node來處理請求在把請求轉給後台的流媒體伺服器可能更好吧
3、nodejs可以做服務端嗎
Nodejs可以做伺服器,只不過,不適用於大量計算和圖形計算的伺服器。
但是適合做中間件。
4、nodejs 如何部署到伺服器上?
兩點:第一是否是線上服務,第二是否需要守護進程;
第一點,如果是線上服務,毫無疑問需要一個守護進程來保證,發生意外導致進程退出後,能重新啟動,提供服務;當然就需要pm2等守護進程來啟動,使用方法請自行參照github;第二點,是否需要守護進程,如果不需要,那麼直接node啟動即可;如果需要,也不必擔心pm2啟動進程後並不會搶占伺服器資源,如果你的server有很大的需求,毋庸置疑需要更多的內存和cpu,如果沒有很大需求,pm2會基於linux的資源調度策略,並不會搶占;
5、用nodejs搭建伺服器有什麼壞處
一般只問好處,沒聽說過要找壞處的。
使用Node.js搭建Web伺服器是學習Node.js比較全面的入門學習了。
因為實現Web伺服器需要用到幾個比較重要的模塊:http模塊、文件系統、url解析模塊、路徑解析模塊、以及301重定向技術等。
6、nodejs寫伺服器怎麼樣
<
7、nodejs怎麼實現伺服器與伺服器
var http = require("http"); var url = require("url"); http.createServer(function (req, res) { var urlObj = url.parse(req.url, true); // 獲取中國 URL var urlToProxy = urlObj.query.url; if (!urlToProxy) { res.statusCode = 四00; res.end("URL 必須"); } else { console.log("處理中國請求:" + urlToProxy); var parsedUrl = url.parse(urlToProxy); var opt = { host : parsedUrl.hostname, port : parsedUrl.port || 吧0, path : (parsedUrl.pathname || "") + (parsedUrl.search || "") + (parsedUrl.hash || "") }; http.get(opt, function(pres) { // 請求中國 URL 內容 res.statusCode = pres.statusCode; var headers = pres.headers; for (var key in headers) { res.setHeader(key, headers[key]); } pres.on("data", function(chunk) { res.write(chunk); // 寫數據 }); pres.on("end", function() { res.end(); }); }); } }).listen(吧0吧吧, "一二漆.0.0.一"); console.log("中國伺服器已經 吧0吧吧 埠啟"); 整中國伺服器實現比較簡單首先通 http 模塊 createServer() 用創建 HTTP 伺服器再通 listen() 讓該 HTTP 伺服器特定埠監聽 createServer() 傳入參數 HTTP 請求響應實際每 HTTP 請求都應於 HTTP 伺服器 request 事
8、nodejs寫服務端怎麼樣
1. 使用nodejs做底層,javascript編寫邏輯代碼能很大程度上提高開發效率。
2. 無需編譯,修改完直接回啟動運行,非常迅速答
3. nodejs大而全的底層庫,以及海量的優秀插件能大大簡化開發流程。
4. 與nosql資料庫完美結合。
5. 可包攬伺服器架構中的方方面面。
6. javascript熱更新非常方便。
缺點:
1. 有句話是這么說的:「動態類型一時爽,代碼重構火葬場。」
2. 好用的IDE比較缺乏。
3. 無法直接進行多線程編程。
個人認為強類型語言更適合做游戲伺服器開發。
9、用nodejs做後台的網站要用什麼伺服器和資料庫?
nodejs一般用於高並發後台程序,單線程
事件驅動,V8引擎
都很牛X,你要是自己玩,起碼用mysql
或者mysql,如果是大型項目
就是oracle了,我個人在本機上玩
用mysql,效果還可以