// http.js
const http = require('http');
const fs = require('fs');
const objHtml = {'Content-Type' : 'text/html;charset=utf-8'};
const uService = (req, reply) => {
const filename = (req.url == '/') ? './index.html' : `.${req.url}`;
if (! fs.existsSync(filename)) {// console.log(filename);
reply.writeHead(404, objHtml);
reply.write('<!DOCTYPE html><html><body>Not Found<body></html>');
reply.end();
return;
}
const mimeType = filename.endsWith('.html') ? objHtml :
filename.endsWith('.css') ? {'Content-Type' : 'text/css'} :
filename.endsWith('.js') ? {'Content-Type' : 'application/javascript'} :
{'Content-Type' : 'application/octet-stream'};
reply.writeHead(200, mimeType);
fs.createReadStream(filename).pipe(reply);
}
const port = 8080;
console.log(`http://0.0.0.0:${port}/`);
http.createServer(uService).listen(port);
使用 nodejs 來跑: node http.js, 並用瀏覽器瀏覽網址 http://127.0.0.1:8080/index.html
改用 dart 語言來寫:
// http.dart
import 'dart:io';
final objHtml = ContentType('text', 'html', charset: 'UTF-8');
final uService = (HttpRequest req) {
final reply = req.response;
final filename = (req.uri.path == '/') ? './index.html' : '.${req.uri.path}';
final file = File(filename);
if (! file.existsSync()) {
reply .. statusCode = 404 ..
headers.contentType = objHtml ..
write('<!DOCTYPE html><html><body>Not Found<body></html>') ..
close();
return;
}
reply .. statusCode = 200 ..
headers.contentType = RegExp(r'(\.htm|\.html)$').hasMatch(filename) ? objHtml :
RegExp(r'\.css$').hasMatch(filename) ? ContentType('text', 'css') :
RegExp(r'\.js$').hasMatch(filename) ? ContentType('application', 'javascript') :
ContentType('application', 'octet-stream') ..
headers.contentLength = file.lengthSync();
file.openRead().pipe(reply);
};
main() {
final port = 8080;
print("http://0.0.0.0:${port}/");
HttpServer.bind(InternetAddress.anyIPv4, port).then((http)=>http.listen(uService));
}
使用 dart 來跑: dart http.dart, 並用瀏覽器瀏覽網址 http://127.0.0.1:8080/index.html
2022年11月23日 星期三
20 幾行的 http 伺服器(node js)
訂閱:
張貼留言 (Atom)
Linux mint 玩 waydroid 一些心得
1. 目前使用 linux mint 22.1 作業系統可以順利跑起來, 可上官網去下載, 並安裝到硬碟. 2. 安裝 waydroid 可上網站 https://docs.waydro.id 參考看看: https://docs.waydro.id/usage/inst...
-
1. 上 Firebase 網站 註冊啟用 Firebase : https://firebase.google.com/ 2. 進入 Firebase Console 註冊開啟新專案 : https://console.firebase.google.com/...
-
Flutter 讓人很容易短時間就能開發出 app, 關鍵在於他開發了很多種小部件稱為 Widget, 將Widget 組合起來就是一個 app. 所謂 部 件(Widget)就是一個可以呈現在螢幕上的視覺系 物 件,幾乎可以說 Flutter 每個物件都是 部 件. 開發者透...
沒有留言:
張貼留言