h264-live-player程式碼學習與註解(二):server-rpi.js

whstudio123發表於2020-12-06

h264-live-player程式碼學習與註解(二):server-rpi.js

"use strict";

/**
* Run this on a raspberry pi 
* then browse (using google chrome/firefox) to http://[pi ip]:8080/
*/


const http    = require('http');
const express = require('express');


const WebStreamerServer = require('./lib/raspivid');

const app  = express();

  //public website
app.use(express.static(__dirname + '/public'));
app.use(express.static(__dirname + '/vendor/dist'));

const server  = http.createServer(app);
const silence = new WebStreamerServer(server);

server.listen(8080);

1.使用 “use strict” 指令
“use strict” 指令在 JavaScript 1.8.5 (ECMAScript5) 中新增。
它不是一條語句,但是是一個字面量表示式,在 JavaScript 舊版本中會被忽略。
“use strict” 的目的是指定程式碼在嚴格條件下執行。
嚴格模式下你不能使用未宣告的變數。

2.require命令
用於引入模組、 JSON、或本地檔案。
可以從 node_modules 引入模組。 可以使用相對路徑(例如 ./、 ./foo、 ./bar/baz、 …/foo)引入本地模組或 JSON 檔案,路徑會根據 __dirname 定義的目錄名或當前工作目錄進行處理。
例子:

// 引入本地模組:
const myLocalModule = require('./path/myLocalModule');

// 引入 JSON 檔案:
const jsonData = require('./path/filename.json');

// 引入 node_modules 模組或 Node.js 內建模組:
const crypto = require('crypto');

3.express模組

Express 是一個簡潔而靈活的 node.js Web應用框架, 提供了一系列強大特性幫助你建立各種 Web 應用,和豐富的 HTTP 工具。
使用 Express 可以快速地搭建一個完整功能的網站。

app.get和app.use,app.all註冊路由:
app.get註冊路由:
請求方法必須是get方法,而且路徑是嚴格匹配的(忽略url後面拼接的引數,例如?name=123這類)

app.use註冊路由:
不限定請求的方法,get/post等都可以
路徑模糊匹配,這個路徑和他路徑下的子路徑都可以匹配

app.use('/item', function (req, res) {
    res.send('itemPage');
})
//http://localhost:8080/item 成功
//http://localhost:8080/item/233 成功
//http://localhost:8080/item?name=hello 成功
//http://localhost:8080/123/item 失敗
//http://localhost:8080/item233 失敗

4.express.static
在使用express框架的時候,會遇到設定靜態檔案目錄,程式碼如下:

//將靜態檔案目錄設定為:專案根目錄+/public
app.use(express.static(__dirname + '/public'));
//或者
app.use(express.static(path.join(__dirname, 'public')));

express 會在靜態資源目錄下查詢檔案,所以不需要把靜態目錄public作為url的一部分。現在,你可以載入 public目錄下的檔案了:

http://localhost:3000/hello.html
http://localhost:3000/images/1.jpg
http://localhost:3000/css/style.css
http://localhost:3000/js/index.js

5.server = http.createServer(app);

函式原型:http.createServer([requestListener])
http函式用來建立一個HTTP伺服器,並將 requestListener 作為 request 事件的監聽函式。
簡單用法:
var http = require(‘http’);

 http.createServer(function(req, res){
  res.writeHead(200, {'Content-type' : 'text/html'});
  res.write('<h1>Node.js</h1>');
  res.end('<p>Hello World</p>');
 }).listen(3000);

可以看到,傳入的其實是一個function
之前我們呼叫的express()其實是返回了一個名為app的function物件,我們正好把他們塞進http.createServer中。

相關文章