2015-04-12 4 views
0

Я новичок в Node.js, и я пытаюсь настроить свой маршрут в файле server1.js.Нужна помощь с использованием маршрутов для socket.io

Когда я перехожу на свой localhost:3000/socket.html, он не читает футляр для socket.html, вместо этого он идет прямо к случаю по умолчанию.

Однако, когда я вывожу путь на бревне консоли .. Я вижу путь правильно выводимый который /socket.html

Я действительно запутался и не понимаю, почему его не доходя до этого дела заявления.

Любая помощь была бы действительно оценена. Ниже приведен код, который я использую.

var http = require('http'); 
var url = require('url'); 
var fs = require('fs'); 


var server = http.createServer(function(request,response){ 

    console.log('Connection'); 
    var path = url.parse(request.url).pathname; 

    console.log(path); //Shows the correct path in console 


    switch(path){ 

    //This case statement works 
     case '/': 

    response.writeHead(200,{'Content-Type': 'text/html'}); 
    response.write('hello world'); 
    break; 

    //It doesn't reach this case statement 
    case 'socket.html': 


    fs.readFile(__dirname + path, function(error,data) { 

     if(error){ 
      response.writeHead(404); 
      resonse.write("oops this file doesn't exist - 404"); 
     } else { 
      response.writeHead(200, {"Content-Type" : "text/html"}); 
      response.write(data,"utf8"); 
     } 

    }); 

     console.log('socket path'); 

    break; 

    default : 
    response.writeHead(404); 
    response.write("oops this doesn't exist - 404 coming from deafult"); 
    break; 
    } 



    response.end(); 

}); 


server.listen(3000); 
+1

Может ли это быть потому, что '/ socket.html' не равно' socket.html'? – bloodyKnuckles

+0

@bloodyKnuckles Я попытался использовать /socket.html, но он просто отображает пустую страницу с нуля – json2021

ответ

1

У вас есть две проблемы. Во-первых, путь не соответствует - это /socket.html, а не socket.html, так вот что вы должны положить в свой case.

Во-вторых, вы вызываете response.end() сразу после вашего оператора switch, но случай /socket.html является асинхронным, поэтому он не закончил в этой точке. Вы должны позвонить response.end() отдельно в каждом case, чтобы асинхронные действия были разрешены.

+0

Большое спасибо Ahron. Это была проблема! – json2021

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