我已经使用express搭建了一个node.js服务器,并尝试使用socket.io在服务器端和chrome 12客户端之间建立websocket连接。当我尝试连接时,socket.io输出一个调试信息,说“destroying non-socket.io upgrade”,而且我的连接处理程序中的代码没有运行。此外,在客户端上,我的socket的readyState是2(CLOSING)。
[编辑]
socket的readyState从0变为2。
我已经使用express搭建了一个node.js服务器,并尝试使用socket.io在服务器端和chrome 12客户端之间建立websocket连接。当我尝试连接时,socket.io输出一个调试信息,说“destroying non-socket.io upgrade”,而且我的连接处理程序中的代码没有运行。此外,在客户端上,我的socket的readyState是2(CLOSING)。
[编辑]
socket的readyState从0变为2。
请确保将socket.io.js文件插入到客户端代码中并使用它。如果您尝试在客户端创建自己的websocket,可能会遇到问题。
对于您的服务器,请执行以下操作:
var app = require('express').createServer()
, io = require('socket.io').listen(app);
app.listen(80);
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});
io.sockets.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
对于你正在提供的HTML文件,可以使用类似这样的代码:
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://localhost');
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
</script>
请确保您将/socket.io/socket.io.js
从您的Web服务器目录中提供服务。然后,您所要做的就是在网页浏览器的开发环境选项或使用Firebug时观察控制台日志。