編集:ここでの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()。 falseを返します; '、どちらも問題を解決しません。私はそれがWebソケットの問題だと思う。 –
私はまだあなたがエラーがあるときにあなたが 'return'するべきだと思っていますが、それはおそらく問題ではありません。 – Pointy