6

整天都在努力尝试使用 socket.io 使这个简单的示例工作。我最初在 Windows 7 上使用 Cygwin 进行了尝试。此后也尝试过 OS X,结果相同。

运行脚本时,它显示...

2 May 20:57:47 - socket.io ready - accepting connections

但是访问 index.html 页面并没有显示客户端甚至已连接。

索引.html

<html>
<head>
<script type="text/javascript" src="socket.io.js"></script> 
<script type="text/javascript"> 
    var socket = new io.Socket('localhost',{'port':8090});

    socket.connect();

    socket.on('connect', function(){
        console.log('connected');
        socket.send('hi!'); 
    });

    socket.on('message', function(data){ 
        console.log('message recived: ' + data);
    });

    socket.on('disconnect', function(){
        console.log('disconected');
    });
</script> 
</head>
<body></body>
</html>

服务器.js

var http = require('http'), io = require('socket.io'),

server = http.createServer(function(req, res){ 
    res.writeHead(200, {'Content-Type': 'text/html'}); 
    res.end('<h1>Hello world</h1>'); 
});
server.listen(8090);

var socket = io.listen(server); 
socket.on('connection', function(client){ 
    console.log('client connected');

    client.on('message', function(){ 
        console.log('message arrive');
        client.send('some message');
    });

    client.on('disconnect', function(){
        console.log('connection closed');
    });
});

关于我可能做错了什么的任何想法?没有显示任何控制台消息。值得注意的是,当我使用 Firebug 查看 index.html 页面时,没有嵌入任何脚本,这很奇怪..不确定是什么原因造成的。

4

4 回答 4

9

您没有在 index.html 文件中正确加载 socket.io 库。试试这个:

<script type="text/javascript" src="http://localhost:8090/socket.io/socket.io.js"></script> 
于 2011-05-02T12:42:42.773 回答
8

您没有提供 socket.io.js(或 flash 文件)。

我建议使用 CDN:

<script src="http://cdn.socket.io/stable/socket.io.js"></script>

或者使用express来提供 socket.io.js 文件。

编辑:

错误实际上仔细观察你也没有再次提供 index.html 可以工作,但对于简单的例子:

var fs = require('fs');
var index = fs.readFileSync('index.html');
//note the readFileSync is done only in the first tic
.
.
.
res.writeHead(200, {'Content-Type': 'text/html'}); 
res.end(index); 
于 2011-05-02T13:37:22.523 回答
1

在客户端使用它作为路径!

<script type="text/javascript" src="/socket.io/socket.io.js"></script> 
于 2014-07-01T09:01:55.873 回答
0

是的,并评论以下行:

// server.listen(8090);
于 2012-10-20T22:16:37.390 回答