Веб-сервер на Node.js. Почему дублируется ответ и не отправляются данные?

Здравствуйте.
Пытаюсь написать примитивный веб-сервер, но возникла проблема.
При запросе дублируются ответы, например, joxi.ru/Vrw3yB9F9GLbrX
При работе по стандарту Server Side Events тоже возникли проблемы - не отправляются данные. Если быть точнее, то начинают отправляться только через какое-то время, и то если в дальнейшем идет отправка данных, если нет, то "test message" так и не отправится.
Ниже прилагаю код веб-сервера.
var
	http = require( 'http' ),
	fs = require( 'fs' );

http.createServer( function ( request, response ) {
	switch( request.url ) {
		case '/':
			response.writeHead( 200, { 'Content-Type': 'text/html; charset=utf-8' } );
			fs.readFile( 'index.html', function ( error, data ) {
				response.end( data );
			} );
			break;

		case '/js/jquery.js':
			response.writeHead( 200, { 'Content-Type': 'application/javascript; charset=utf-8' } );
			fs.readFile( 'js/jquery.js', function ( error, data ) {
				response.end( data );
			} );
			break;

		case '/js/script.js':
			response.writeHead( 200, { 'Content-Type': 'application/javascript; charset=utf-8' } );
			fs.readFile( 'js/script.js', function ( error, data ) {
				response.end( data );
			} );
			break;

		case '/data':
			response.writeHead( 200, { 'Content-Type': 'text/event-stream' } );
			response.write( 'data: test message\n\n' );
			// setInterval( function () {
			// 	response.write( 'data: '+( new Date ).toLocaleTimeString()+'\n\n' );
			// }, 3000 );
			break;

		default:
			response.writeHead( 404, { 'Content-Type': 'text/plain' } );
			response.end();
			break;
	}
} ).listen( 3000, '127.0.0.1' );

index.html
<!DOCTYPE html>
<html>
	<head>
		<script src="/js/jquery.js"></script>
		<script src="/js/script.js"></script>
		<title>node.js</title>
	</head>
	<body>
	</body>
</html>

js/script.js (закомментирован)
/*$( function () {
	var sse = new EventSource( '/data' );

	sse.message = function ( e ) {
		console.log( e.data );
	}
} );*/

js/jquery.js v2.1.3
Спасибо за помощь!
  • Вопрос задан
  • 789 просмотров
Пригласить эксперта
Ответы на вопрос 2
MarcusAurelius
@MarcusAurelius Куратор тега Node.js
автор Impress Application Server для Node.js
На '/data' Вы не делаете response.end(); Вообще использовать в этом случае switch это плохо, нужно делать поиск по хешу и всемто readFileSync делать readFile с колбэком. Посмотрите вот тут хороший пример: https://github.com/perfectjs/node-server/blob/mast...
Ответ написан
ilnuribat
@ilnuribat
типо пишу программы
судя по картинке - один файл пришел из сервера, другой из кэша
Так что, тут нету дубликаций
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы