nodejs伺服器
① 如何用命令行開啟nodejs搭建web服務器
首先,需要安裝nodejs,這個可以去官網下載,目前我本地安裝的.12版本。
安裝完成後可以通過命令行測試安裝是否成功,輸入:node -v,應該會顯示當前安裝node版本號。
本文中用到的模塊,都是nodejs核心模塊,不需要從外部下載,如果有需要,可以使用以下命令安裝:npm install xxx。
開始
下一步,新建js文件,可以命名為server.js,代碼如下:
var http = require('http');
var url = require('url');
var path = require('path');
var fs = require('fs');
var dir, arg = process.argv[2] || ''; // 命令行第三個參數,用來接收目錄,可為空,相對當前server.js文件的目錄名稱
// 比如使用命令 node server debug,意思就是debug文件夾與server.js文件同級
// 且你想以debug文件夾啟動web服務
http.createServer(function (req, res) {
var pathname = __dirname + url.parse(req.url).pathname;
② nodejs寫伺服器怎麼樣
目前最主流的三個Web伺服器是Apache、Nginx、IIS。
Node.js 提供了 http 模塊,http 模塊主要用於搭建 HTTP 服務端和客戶端,使用 HTTP 伺服器或客戶端功能必須調用 http 模塊,代碼如下:
[javascript]view plain
varhttp=require('http');
varhttp=require('http');
varfs=require('fs');
varurl=require('url');
//創建伺服器
http.createServer(function(request,response){
//解析請求,包括文件名
varpathname=url.parse(request.url).pathname;
//輸出請求的文件名
console.log("Requestfor"+pathname+"received.");
//從文件系統中都去請求的文件內容
fs.readFile(pathname.substr(1),function(err,data){
if(err){
console.log(err);
//HTTP狀態碼404:NOTFOUND
//ContentType:text/plain
response.writeHead(404,{'Content-Type':'text/html'});
}
else{
//HTTP狀態碼200:OK
//ContentType:text/plain
response.writeHead(200,{'Content-Type':'text/html'});
//寫會相應內容
response.write(data.toString());
}
//發送響應數據
response.end();
});
}).listen(8081);
console.log('Serverrunningathttp://127.0.0.1:8081/');
<!DOCTYPEhtml>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>index</title>
</head>
<body>
這是一個用於進行nodejs伺服器測試的html文件,我們能夠通過在瀏覽器上面輸入
http://127.0.0.1:8081/WebServer/index.html進行訪問
</body>
</html>
在通常的伺服器中,數據流通的方式是客戶先通過瀏覽器進行發送請求,伺服器在項目中進行查找,然後進客戶所需要的頁面進行返回,在查找的過程中可能存在兩種情況,就是存在和不存在,當然,我們會做出判斷,下面就是簡單的伺服器實現過程:
1、編寫伺服器代碼server.js
[javascript]view plain
通過上面代碼,我們就能夠實現伺服器對於文件的查找,下面,我們就進行創建一個html文件,然後通過瀏覽器進行訪問
2、編寫html文件(index.html),用於瀏覽器進行請求
[html]view plain
創建完之後,我們進行測試,現在我的目錄結構是這樣的:
③ nodejs 如何部署到伺服器上
兩點:第一是否是線上服務,第二是否需要守護進程;
第一點,如果是線上服務,毫無疑問專需要一個守護進程來屬保證,發生意外導致進程退出後,能重新啟動,提供服務;當然就需要pm2等守護進程來啟動,使用方法請自行參照github;第二點,是否需要守護進程,如果不需要,那麼直接node啟動即可;如果需要,也不必擔心pm2啟動進程後並不會搶占伺服器資源,如果你的server有很大的需求,毋庸置疑需要更多的內存和cpu,如果沒有很大需求,pm2會基於linux的資源調度策略,並不會搶占;
④ 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 事
⑤ 用nodejs搭建伺服器有什麼壞處
一般只問好處,沒聽說過要找壞處的。
使用Node.js搭建Web伺服器是學習專Node.js比較全面的屬入門學習了。
因為實現Web伺服器需要用到幾個比較重要的模塊:http模塊、文件系統、url解析模塊、路徑解析模塊、以及301重定向技術等。
⑥ 如何用nodejs搭建web伺服器
創建一個記事本將下面的代碼復制進去 保存為app.js
var http = require('http');//引入響應頭
http.createServer(function (request, response) {
//參數一是與請求相關的對象
//參數二是與響應有關的對象
// 發送 HTTP 頭部
// HTTP 狀態值: 200 : OK
// 內容類型: text/plain
response.writeHead(200, {'Content-Type': 'text/plain'});
// 發送響應數據 "Hello World"
response.end('Hello World ');
}).listen(8888);//監聽埠
// 終端列印如下信息
console.log('Server running at http://127.0.0.1:8888/');
以下以我的電腦上的路徑為准 我是將app.js 保存在E:NODE這個文件夾下面
接下來就是運行了打開cmd
第一步:E:
第二步:cd NODE //CD是 命令行改變目錄的命令
第三步:node app.js
這個是運行效果接下來訪問localhost:8888就可以看到hollo word
建議多看一些node的模塊 比如 express和session mysql之類的模塊
⑦ 如何訪問nodejs伺服器上的文件
伺服器推薦用nginx,配置簡單,性能強悍。nginx可以使用代理訪問後端的Node.js應用伺服器。配置專方法:1)在屬配置文件http段內容添加後端伺服器:http{#添加後端伺服器,和nginx負載均衡配置一樣upstreamnodejs{server127.0.0.1:8080;}}2)給應用添加虛擬主機:server{listen80;server_nameIPlocation/{proxy_passnodejs;#名字和前面的對應,將所有的請求轉發給後端的node}access_loglogs/nodejs.access.logmain;#如果需要日誌的話}推薦將靜態文件如css、js和圖片和應用伺服器分開。
⑧ 怎麼連接nodejs伺服器
前面已經學習了WebSocket API,包括事件、方法和屬性。詳情:WebSocket(二)--APIWebSocket是基於事件驅動,支持全雙工通信。下面通過三個簡單例子體驗一下。
簡單開始
1.安裝node。/
2.安裝ws模塊
ws:是nodejs的一個WebSocket庫,可以用來創建服務。
3.server.js
在項目裡面新建一個server.js,創建服務,指定8181埠,將收到的消息log出來。
//建立連接
var ws = new WebSocket("ws://localhost:8181"); var nickname = "";
ws.onopen = function (e) {
console.log('Connection to server opened');
} //顯示
function appendLog(type, nickname, message) { if (typeof message == "undefined") return; var messages = document.getElementById('messages'); var messageElem = document.createElement("li"); var preface_label; if (type === 'notification') {
preface_label = "<span class="label label-info">*</span>";
} else if (type == 'nick_update') {
preface_label = "<span class="label label-warning">*</span>";
} else {
preface_label = "<span class="label label-success">"
+ nickname + "</span>";
} var message_text = "<h2>" + preface_label + " "
+ message + "</h2>";
messageElem.innerHTML = message_text;
messages.appendChild(messageElem);
} //收到消息處理
ws.onmessage = function (e) { var data = JSON.parse(e.data);
nickname = data.nickname;
appendLog(data.type, data.nickname, data.message);
console.log("ID: [%s] = %s", data.id, data.message);
}
ws.onclose = function (e) {
appendLog("Connection closed");
console.log("Connection closed");
} //發送消息
function sendMessage() { var messageField = document.getElementById('message'); if (ws.readyState === WebSocket.OPEN) {
ws.send(messageField.value);
}
messageField.value = '';
messageField.focus();
} //修改名稱
function changName() { var name = $("#name").val(); if (ws.readyState === WebSocket.OPEN) {
ws.send("/nick " + name);
}
}
運行結果:
頁面關閉之後,連接馬上斷開。
這種實時響應的體驗簡直不能太爽,代碼也清爽了,前端體驗也更好,客戶端不用一直發請求,服務端不用等著被輪詢。
小結:上面例子的代碼都很好理解,接下來學習WebSocket協議。
⑨ nodejs當web伺服器行不行
可以呀
使用Node.js搭建Web伺服器是學習Node.js比較全面的入門教程,因為實現Web伺服器需要用到幾個比較重要的模塊:http模塊、文件系統、url解析模塊、路徑解析模塊、以及301重定向技術等,下面我們就一起來學習如何搭建一個簡單的Web伺服器。
作為一個Web伺服器應具備以下幾個功能:
1、能顯示以.html/.htm結尾的Web頁面
2、能直接打開以.js/.css/.json/.text結尾的文件內容
3、顯示圖片資源
4、自動下載以.apk/.docx/.zip結尾的文件
5、形如http://xxx.com/a/b/ , 則查找b目錄下是否有index.html,如果有就顯示,如果沒有就列出該目錄下的所有文件及文件夾,並可以進一步訪問。
6、形如http://xxx.com/a/b, 則作301重定向到http://xxx.com/a/b/ , 這樣可以解決內部資源引用錯位的問題。
引入需要用到的幾個模塊:
//http協議模塊varhttp = require('http');//url解析模塊varurl = require('url');//文件系統模塊varfs = require("fs");//路徑解析模塊varpath = require("path");
創建服務並在指定的埠監聽:
//創建一個服務varhttpServer = http.createServer(this.processRequest.bind(this));//在指定的埠監聽服務httpServer.listen(port,function(){console.log("[HttpServer][Start]","runing at http://"+ip+":"+port+"/");console.timeEnd("[HttpServer][Start]");});
在創建服務的時候需要傳遞一個匿名函數processRequest 對請求進行處理,processRequest接收2個參數,分別是request和response, request對象中包含了請求的所有內容,response是用來設置響應頭以及對客戶端做出響應操作。
processRequest:function(request,response){varhasExt =true;varrequestUrl = request.url;varpathName = url.parse(requestUrl).pathname;//對請求的路徑進行解碼,防止中文亂碼pathName = decodeURI(pathName);//如果路徑中沒有擴展名if(path.extname(pathName) ===''){//如果不是以/結尾的,加/並作301重定向if(pathName.charAt(pathName.length-1) !="/"){pathName +="/";varredirect ="http://"+request.headers.host + pathName;response.writeHead(301, {location:redirect});response.end();return;}//添加默認的訪問頁面,但這個頁面不一定存在,後面會處理pathName +="index.html";hasExt =false;//標記默認頁面是程序自動添加的}//獲取資源文件的相對路徑varfilePath = path.join("http/webroot",pathName);//獲取對應文件的文檔類型varcontentType =this.getContentType(filePath);//如果文件名存在fs.exists(filePath,function(exists){if(exists){response.writeHead(200, {"content-type":contentType});varstream = fs.createReadStream(filePath,{flags:"r",encoding:null});stream.on("error", function() {response.writeHead(500,{"content-type":"text/html"});response.end("<h1>500 Server Error</h1>");});//返迴文件內容stream.pipe(response);}else{//文件名不存在的情況if(hasExt){//如果這個文件不是程序自動添加的,直接返回404response.writeHead(404, {"content-type":"text/html"});response.end("<h1>404 Not Found</h1>");}else{//如果文件是程序自動添加的且不存在,則表示用戶希望訪問的是該目錄下的文件列表varhtml ="<head><meta charset='utf-8'></head>";try{//用戶訪問目錄varfiledir = filePath.substring(0,filePath.lastIndexOf('\'));//獲取用戶訪問路徑下的文件列表varfiles = fs.readdirSync(filedir);//將訪問路徑下的所以文件一一列舉出來,並添加超鏈接,以便用戶進一步訪問for(variinfiles){varfilename = files[i];html +="<div><a href='"+filename+"'>"+filename+"</a></div>";}}catch(e){html +="<h1>您訪問的目錄不存在</h1>"}response.writeHead(200, {"content-type":"text/html"});response.end(html);}}});}請求處理函數中有幾個重點需要說一下:
對於路徑中有中文的,瀏覽器會自動進行編碼(英文不變,中文會變),因此在接收到地址後,需要對地址進行解碼,否則最後得到的路徑和真實路徑不相符,
當訪問路徑不是以具體的文件結尾,並且不是以/結尾,則需要通過重定向加上/,表示當前目錄,否則當前路徑下的靜態資源會找不到
如果訪問路徑是目錄,則列出該目錄下所有文件及文件夾,並可以點擊訪問,為了讓中文目錄能正常顯示,則還要在header中設置charset=utf-8
核心代碼就這么多,大概140行左右,完整的代碼已上傳到github:https://github.com/git-onepixel/Node,
如果要運行demo,打開cmd切換到根目錄,運行node start 即可。
⑩ 如何配置nodejs伺服器環境
小鳥雲伺服器niaoyun實例創建好之後,您可以使用以下任意一種方式登錄伺服器:專
遠程桌屬面連接(,MSTSC):採用這種方式登錄,請確保實例能訪問公網。如果在創建實例時沒有購買帶寬,則不能使用遠程桌面連接。
管理終端VNC:無論您在創建實例時是否購買了帶寬,只要您本地有網頁瀏覽器,都可以通過管理控制台的管理終端登錄實例。
使用遠程桌面連接(MSTSC)登錄實例
打開開始菜單>遠程桌面連接,或在開始菜單>搜索中輸入mstsc。也可以使用快捷鍵Win+R來啟動運行窗口,輸入mstsc後回車啟動遠程桌面連接。
在遠程桌面連接對話框中,輸入實例的公網IP地址。單擊顯示選項。
輸入用戶名,如小鳥雲默認為niaoyun。單擊允許我保存憑據,然後單擊連接。這樣以後登錄就不需要手動輸入密碼了。