websocket问题:无法连接到node.js服务器

Jer*_*oen 6 javascript google-chrome websocket node.js

我有一个node.js服务器启动并运行Express,我正在尝试使用socket.io服务器端和chrome 12客户端建立websocket连接.当我尝试连接时,socket.io输出一条调试消息,说"破坏nonsocket.io升级",并且我的连接处理程序中的代码不运行.同样在客户端,我的socket的readyState是2(CLOSING).

[edit]套接字的readyState从0更改为2

Ehe*_*Tov 1

确保将 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);
  });
});
Run Code Online (Sandbox Code Playgroud)

对于您正在提供的 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>
Run Code Online (Sandbox Code Playgroud)

确保您是/socket.io/socket.io.js从网络服务器目录提供服务。然后,您所要做的就是在访问该页面时从选项或使用Firebug观察您的控制台登录到 Web 浏览器的开发人员环境中。