WebSocket没有连接到socket.io

时间:2011-11-13 01:16:18

标签: javascript node.js 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服务请求,我看不到任何用户连接。

据我所知,这应该有效,有人可以解释可能出现的问题吗?

2 个答案:

答案 0 :(得分:6)

您需要一个socket.io客户端来传递我认为的一些身份验证阶段。试试这个,它应该工作(客户端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?

     

Socket.IO甚至不仅仅是WebSocket   如果选择WebSocket作为传输并且用户正在浏览   您的网站使用超现代的浏览器。某些功能如   心跳,超时和断开支持对实时至关重要   应用程序,但WebSocket API不提供开箱即用的功能。

     

这类似于jQuery创建功能丰富的决定   简单的$ .ajax API而不是规范化XMLHttpRequest。

答案 1 :(得分:0)

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