WebSocket没有连接到socket.io

Jam*_*son 1 javascript websocket node.js 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"});
});
Run Code Online (Sandbox Code Playgroud)

这是我正在尝试连接的代码:

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

当我加载页面时,没有任何反应.我正在使用Chrome,我知道支持websockets.错误控制台中没有错误,如果我从命令行看到socket.io服务请求,我看不到任何用户连接.

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

Far*_*hat 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>
Run Code Online (Sandbox Code Playgroud)

来自http://socket.io/#faq

为什么不在WebSocket实际的WebSocket不存在的情况下调用它并模仿它的API呢?

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

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