2012-06-30 3 views
3

Я пытаюсь разделить мой код betwen сервера и клиента я использую следующий код (app.js):Подавать пользовательские статические файлы с socket.io nodejs

var io = require('socket.io').listen(8000), 
    Static = require('socket.io').Static; 

io.configure(function() { 
    var _static = new Static(io); 

    // some methods to add my custom files 

    _static.add('\public\test.js'); 
    io.set('static', _static); 
}); 

Моя файловая структура выглядит следующим образом:

  1. корень
    • app.js
    • общественного
      • т est.js

Когда я типа "HTTP: // локальный: 8000/public.test.js" Браузер по умолчанию загрузки файла "Добро пожаловать в Socket.io"

ответ

7

Этот вопрос довольно старый, но вот тока способ сделать это (для v0.9):

var io = require('socket.io').listen(8000); 
io.static.add('/path/for/request.js', {file: 'path/to/file.js'}); 

Обратите внимание, что путь к ресурсу относительно пути Socket.io, поэтому запрос URI будет что-то вроде :

http://localhost:8000/socket.io/path/for/request.js 

Если вы видите сообщение об ошибке, как Protocol version not supported, то это означает, что ваш запрос URI, вероятно, имеет расширение, которое менеджер не может поддерживать. Вот как добавить, что поддержка:

io.static.add('/path/for/request.foo', { 
    mime: { 
    type: 'application/javascript', 
    encoding: 'utf8', 
    gzip: true 
    }, 
    file: 'path/to/file.js' 
}); 

Документация точки на their own Static library для рабочей реализации.

+0

черт, просто прочитал первые 3 строки и провел 60 минут, «почему путь не работает !!!» ewww .. –

+0

как вы обслуживаете все файлы в папке? –

+0

Я не могу найти документацию для io.static.add. Не могли бы вы указать мне одну? –

Смежные вопросы