kormos Δημοσ. 4 Μαρτίου 2018 Μέλος Δημοσ. 4 Μαρτίου 2018 2 ώρες πριν, ajaxmonkey4hire είπε γράψε ένα μικρο webserver βάλτο σε ένα nuc στο lan σου και τελείωσες. για την αρχή μπορείς να χρησιμοποιήσεις ένα πειραματικό που έγραψα εγώ πέρυσι για όμοια εφαρμογή: /* * server: node.js quickanddirty/web server * author: [email protected] * created: 20170219 * updates: * */ 'use strict'; const http = require('http'); const url = require("url"); const qs = require('querystring'); const path = require("path"); const fs = require("fs"); const zlib = require('zlib'); const fTypes = { '.css': {mime:'text/css', gz:1}, '.js': {mime:'text/javascript', gz:1}, '.html': {mime:'text/html; charset=UTF-8', gz:1}, '.mpg' : {mime:'video/mpeg'}, '.mp4' : {mime:'video/mpeg'}, '.mpeg': {mime:'video/mpeg'}, '.ts': {mime:'video/MP2T'}, '.webm': {mime:'video/MP2T'}, '.m3u8': {mime:'video/MP2T', gz:1}, '.svg': {mime:'video/MP2T'}, '.gif' : {mime:'image/gif'}, '.jpg' : {mime:'image/jpeg'}, '.jpeg': {mime:'image/jpeg'}, '.png' : {mime:'image/png'}, '.ico' : {mime:'image/x-icon'} }; //serve static resource-------------------------------------------------------- function serve(filePath, out, acceptEncoding){ var ext = path.extname(filePath); if ( fTypes[ext] ){ fs.stat(filePath, function(err, stat){ if ( err ){ out.writeHead(404, {'Content-Type': 'text/html'}); out.end('<!doctype html><html><body>File not found</body></html>'); }else{ var raw = fs.createReadStream(filePath, {bufferSize: 16384}); if ( acceptEncoding && fTypes[ext].gz ){ if (acceptEncoding.match(/\bdeflate\b/)) { out.writeHead(200, {'Content-Type': fTypes[ext].mime, 'content-encoding':'deflate'}); raw.pipe(zlib.createDeflate()).pipe(out); } else if (acceptEncoding.match(/\bgzip\b/)) { out.writeHead(200, {'Content-Type':fTypes[ext].mime, 'content-encoding':'gzip'}); raw.pipe(zlib.createGzip()).pipe(out); } else { out.writeHead(200, {'content-type':fTypes[ext].mime, 'content-length':stat.size}); raw.pipe(out); } }else{ out.writeHead(200, {'content-type':fTypes[ext].mime, 'content-length':stat.size}); raw.pipe(out); } } }); }else{ out.writeHead(401, {'Content-Type': 'text/html'}); out.end('<!doctype html><html><body>Mime type not supported</body></html>'); } }; //server----------------------------------------------------------------------- http.createServer( function(req, res){ var now = parseInt(Math.floor(new Date().getTime()*0.001)); var method = req.method.toUpperCase(); var uripath= url.parse(req.url).pathname.replace(/^\/|\/$/g, '').trim(); var tokens = uripath.split('/'); console.log(uripath); switch ( tokens.shift() ){ case '': case 'index.html': case 'index.htm': case 'index': serve('wwwroot/index.html', res, req.headers['accept-encoding']||''); break; default: serve('wwwroot/'+uripath, res, req.headers['accept-encoding']||''); break; } } ).listen(8080); Θα το δω και αυτό και θα ενημερώσω
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα