为什么我的Node.js服务器挂起这个小脚本?

时间:2016-04-08 20:34:34

标签: javascript node.js websocket socket.io

编辑:已在下方回答

这里是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>

如果有错误,那么它应该结束响应,如果没有,它应该结束响应,或者它是否与Web套接字有关?

2 个答案:

答案 0 :(得分:0)

尝试更改您调用socket.io的方式:

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

websocket.on('connection', doStuff);

此示例直接来自the docs on GitHub

答案 1 :(得分:0)

问题在于projectId:your-project-name groupdId:com.yourdomain.reverse version:1.0 。 Socket.io使用websocket.connect()作为前端的全局对象,而不是io。所以应该是websocket