Domanda

Diciamo che ho la seguente struttura del filesystem:

/app/            Main application folder
  /app.js        Server JS file ran by node.js
  /public        Folder containing files for public website (port 80)
    /index.html
    /js/
      /game.js
  /admin/        Folder containing files used by local network system (port X)
    /index.html
    /js/
      /screen.js
  /share/        Folder containing files to be used by public website OR lan
    /js/
      /jquery.js
.

Il risultato finale è che admin/index.html sarebbe simile a

<script type="text/javascript" src="/js/jquery.js"></script>
<script type="text/javascript" src="/js/screen.js"></script>
.

Cioè, sto caricando due file da diverse posizioni.Fondamentalmente, il pensiero qui è "Controllare se il file è in /share, in caso contrario, prova a caricarlo dalla cartella in base alla porta" .

Ed ecco il codice corrente che sto usando:

var connect = require('connect'),
    sourcePublic = connect().use(
        connect.static(__dirname + '/public', { maxAge: 86400000 })
    ),
    sourceAdmin = connect().use(
        connect.static(__dirname + '/admin', { maxAge: 86400000 })
    ),
    sourceShare = connect().use(
        connect.static(__dirname + '/share', { maxAge: 86400000 })
    ),
    serverPublic = http.createServer(sourcePublic).listen(80),
    serverAdmin  = http.createServer(sourceAdmin).listen(90);
// ok, how do I use sourceShare?
.

PS: Questo sistema dovrebbe essere accessibile in tutto il mondo attraverso http://host/ (possibilmente un dominio o IP statico) e accessibile tramite la rete locale tramite http://host:90/.

Mentre le cose sulla porta 90 non danneggeranno il sistema (è solo una schermata di uscita), preferirei se le persone non sarebbero in grado di accedervi dall'esterno (facilmente eseguibili garantendo che non ci sia un porto 90Router e server).

È stato utile?

Soluzione

Connect Middleware è impilabile, in modo da poter ottenere il risultato desiderato semplicemente impilando tutti gli handler ricercati dopo l'altro. Public Server ottiene / Public e / share handlere admin ottiene il / admin e / share handlers.

Quindi la richiesta al server pubblico cercherà la risorsa in / Public Se non è stato trovato quindi la cartella nella cartella / Condividi .E il server di amministrazione lo fa allo stesso modo.

var connect = require('connect'),
    sourcePublic = connect().use(
        connect.static(__dirname + '/public', { maxAge: 86400000 })
    ).use(
        connect.static(__dirname + '/share', { maxAge: 86400000 })
    ),
    sourceAdmin = connect().use(
        connect.static(__dirname + '/admin', { maxAge: 86400000 })
    ).use(
        connect.static(__dirname + '/share', { maxAge: 86400000 })
    ),
    serverPublic = http.createServer(sourcePublic).listen(80),
    serverAdmin  = http.createServer(sourceAdmin).listen(90);
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top