手寫乙個伺服器 二

2021-08-24 17:27:58 字數 2421 閱讀 3151

上一節我們完成的服務起的目錄搭建,並寫了乙個簡單的服務,在這一節,將完成函式封裝,返回內容…

每次我麼在寫玩**都需要重新啟動服務,簡直蠢的不要不要的,這裡我們使用supervisor

// supervisor 熱更新模組

安裝:npm install supervisor -g

supervisor 會自動檢測檔案改動,然後重啟服務

// debug後面放置的是引數,可以根據後邊的引數決定是否列印

// debug 設定環境變數: set debug=***

// powershell設定環境變數: $env:debug = "*,-not_this"

let templ = fs.readfilesync(path.join(__dirname, 'tmpl.ejs'), 'utf8')

let readdir = util.promisify(fs.readdir)

// var debug = require('debug');

// console.log(chalk.green('hello'))

// supervisor 熱更新模組

// npm install supervisor

// 建立服務

debug(url) // 列印日誌

server.listen(port, hostname)

}// 伺服器處理函式

handlerequest () = url.parse(req.url)

// 拼接完整路徑

let p = path.join(this.config.dir, '.' + pathname)

// 檢測檔案是否存在

try , ]})

let dirs = await readdir(p) // 讀取目錄的檔案路徑

// 將拿到的目錄對映成為乙個陣列,裡邊是乙個物件

dirs = dirs.map(dir => ())

// 如果是目錄,使用ejs渲染並返回結果

let content = ejs.render(this.templ, )

res.end(content)

} else

} catch (error) }}

// 傳送檔案

sendfile (req, res, p)

// 傳送錯誤

senderror (err, req, res)

}let server = new server()

server.start()

為了方便渲染目錄,我們之類引入ejs模板引擎,並在src下建立乙個模板

html>

到此為止,我們已經可以返回基本的內容,和目錄結構的返回,並可以檢視對應的內容。

編了乙個伺服器

伺服器 include 包含socket 2版本的標頭檔案 include include pragma comment lib,ws2 32.lib 呼叫網路動態庫!int tmain int argc,tchar argv word sockversion 0x0002 定義版本號 sockve...

搭建乙個FTP伺服器

1 首先在本地機器上建立乙個使用者!這些使用者是用來登入到ftp的!我的電腦右鍵 管理 本地使用者和組 使用者 右鍵 新建使用者 輸入使用者名稱和密碼再點建立就行了!3 之後是安裝iis元件!在開始選單裡 控制面板 新增或刪除程式 新增 刪除windows元件 應用程式伺服器 internet 資訊...

寫乙個索引伺服器

今天把 jaxb 返回的 xml 物件 轉到了 lucene 的 document 然後仍給 index search 一把。還算順利搞定。接下來開始解決網路介面。寫乙個基於netty的索引伺服器。接收client仍過來的xml資料報。關於netty的資料除了 url 還有一部分中文的。url 大致...