Edit: Ответил нижеПочему мой сервер Node.js зависает с этим маленьким скриптом?
Новое в Node.js здесь, я действительно хочу знать, почему этот скрипт зависает навсегда, когда я пытаюсь подключиться к созданному серверу.
У меня было это происходит довольно часто, когда я пытаюсь создать сервер, и я не знаю, почему, как это, кажется, происходит с очень похожим кодом:
Узел Сценарий:
var http = require("http");
var file = require("fs");
var server = http.createServer(function(request, response)
{
file.readFile("chat.html", "UTF-8", function(error, content)
{
if(error) { console.error(error.stack); response.end(); }
response.writeHead(200, {"content-type" : "text/html"});
response.end(content);
});
}).listen(1994, function(){console.log("Listening");});
var websocket = require("socket.io").listen(server);
websocket.sockets.on("connection", function(socket)
{
socket.emit("message", {"message" : "Hello World"});
});
HTML:
<!DOCTYPE HTML>
<html>
<head>
<title>Chat</title>
<meta charset="utf-8">
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = websocket.connect();
socket.on("message", function(message)
{
console.log(message);
});
</script>
</head>
<body>
<div>Socket file.</div>
</body>
</html>
Если есть ошибка, то она должна завершить ответ, и если там не должно завершить ответ, или у него есть что-то делать с веб-сокет?
Когда есть ошибка из '.readFile()', вы не выходите из функции обратного вызова, хотя я точно не знаю, как это повесит сервер. – Pointy
Я отредактировал свой код, чтобы отразить текущий код. Имею ли я только 'response.end()' самостоятельно или 'response.end(); return false; ', ни решить проблему висит. Я подозреваю, что это проблема с веб-сокетом. –
Я все еще думаю, что вы должны «вернуться», когда есть ошибка, но это, вероятно, не проблема. – Pointy