WebSocket没有连接到socket.io

我用socket.io Node.js来实现我的网页之一的websockets。 server.js(Node.js运行的)有这样的代码:

var http = require("http").createServer(), io = require("socket.io").listen(http); http.listen(8080); io.sockets.on("connection", function(socket) { socket.emit("message", {hello:"world"}); }); 

这是我试图连接的代码:

 var socket = new WebSocket("ws://92.60.122.235:8080/"); socket.onopen = function() { alert("Socket has been opened!"); } 

当我加载页面,没有任何反应。 我使用的是Chrome,而且我知道支持websockets。 在错误控制台中没有错误,如果我观察到来自命令行的socket.io服务请求,我没有看到任何用户连接。

据我所知这应该工作,谁能解释什么可能会出错?

我相信你需要一个socket.io客户端来传递一些authentication阶段。 试试这个,它应该工作(客户端JavaScript由socket.io自己服务,不用担心)。

 <script src="/socket.io/socket.io.js"></script> <script> var socket = io.connect('http://localhost'); socket.on('message', function (data) { console.log(data); socket.emit('helloworld', { msg: 'why do you so love to say hello world?' }); }); </script> 

http://socket.io/#faq

为什么不把它称为WebSocket如果实际的WebSocket不存在,并模仿它的API?

即使select了WebSocket作为传输方式,并且用户使用超现代的浏览器浏览您的网站,Socket.IO也会比WebSocket做的更多。 某些function(如心跳,超时和断开连接支持)对于实时应用程序至关重要,但并不是由WebSocket API提供的。

这与jQuery创buildfunction丰富且简单的$ .ajax API的决定类似,而不是规范化XMLHttpRequest。

您可以通过高级逻辑项目的博客文章“ Websocket Server Demonstration ”下载在Chrome,Firefox和IE(至less)中运行的网页源代码。 该网页是为开发者设置的。