У меня есть простое приложение, работающее на node.js с websockets. Это приложение использует узел-статический модуль для обслуживания некоторых html-страниц с помощью css, js и т. Д. Структура папок заключается в следующем:Переключение с узла-статического на экспресс
-app
- index.html
- server.js
- img/
- base.png
- sub/
- sub.png
- scripts
- base.js
- sub/
- sub.js
- css
- base.css
- sub/
- sub.css
Где server.js находится файл сервера. Внутри server.js есть следующий код:
var static = require('node-static');
var http = require('http');
var file = new(static.Server)();
var app = http.createServer(function (req, res) {
file.serve(req, res);
}).listen(process.env.PORT || 1234);
var WebSocketServer = require('websocket').server;
new WebSocketServer({
httpServer: app,
autoAcceptConnections: false
}).on('request', onRequest);
...
Теперь мне нужно перейти от узла статического Экспресс, потому что мне нужно использовать маршруты. Я использовал этот код, но он не работает:
var express = require('express');
var app = express();
var http = require('http');
var httpServer = http.Server(app);
app.use(express.static(__dirname+'/app'));
app.get('/', function(req, res){
res.sendfile(__dirname + '/index.html');
});
app.listen(1234);
var WebSocketServer = require('websocket').server;
new WebSocketServer({
httpServer: app,
autoAcceptConnections: false
}).on('request', onRequest);
...
Я могу обслуживать файлы, однако он прерывает соединение с веб-разъемом. Что случилось? Обратите внимание, что решение должно быть подходящим для работы на localhost и Heroku.
Я предполагаю, что вы запускаете сервер над '/ app', поэтому он не должен быть' res.sendfile (__ dirname + '/app/index.html'); '? – Tony
@ Тони это работает одинаково, однако оба сломаны соединение с websocket. – ltedone
Я вижу. Определите разбитый. Вы получаете какие-либо ошибки? определяется 'onRequest'? К сожалению, большая часть моего опыта связана с socketio. – Tony