2016-04-08 59 views
0

编辑:回答下面为什么我的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> 

如果有错误,那么它应该结束的响应,如果没有它应该结束的响应,或是否有事情做与网络插座?

+0

当'.readFile()'出现错误时,您不退出回调函数,但我不确定如何挂起服务器。 – Pointy

+0

我编辑了我的代码以反映我当前的代码。无论我自己还是'response.end()'或'response.end();返回false;',既不解决悬挂问题。我怀疑这是web套接字的问题。 –

+0

我仍然认为在出现错误时应该“返回”,但这可能不是问题。 – Pointy

回答

0

问题出在websocket.connect()。 Socket.io在前端使用io作为全局对象,而不是websocket。所以它应该是io.connect()

0

尝试改变你如何调用socket.io

var websocket = require('socket.io')(server); 

websocket.on('connection', doStuff); 

这个例子直接从the docs on GitHub如下。

+0

我已经试过了。这没有什么区别。 –

+0

您是否在控制台中看到任何错误? –

相关问题