Pregunta

Digamos que tengo la siguiente estructura de sistema de archivos:

/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

El resultado final es que se vería admin/index.html:

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

Es decir, estoy cargando dos archivos de diferentes ubicaciones.Básicamente, el pensamiento aquí es "Comprobar si el archivo está en /share, si no, intente cargarlo de la carpeta de acuerdo con el puerto" .

y aquí está el código actual que estoy 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: Este sistema debe ser accesible en el mundo a través de http://host/ (posiblemente un dominio o una IP estática) y accesible a través de la red local a través de http://host:90/.

Mientras que las cosas en el puerto 90 no dañarán el sistema (es solo una pantalla de salida), preferiría que las personas no podrían acceder a ella desde el exterior (fácilmente hechas al garantizar que no haya un reenvío de puerto 90 entreenrutador y servidor).

¿Fue útil?

Solución

Connect Middleware es apilable, por lo que puede lograr el resultado deseado simplemente apilando todos los manipuladores buscados después de los demás. El servidor público obtiene el / Public y / Compartir Handlersy el administrador obtiene el / admin y / share Handlers.

Por lo tanto, solicite el servidor público buscará el recurso bajo la carpeta / Public , si no se encuentra allí, entonces busque en la carpeta / Compartir .Y el servidor de administración lo hace de manera similar.

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);

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top