通过Websocket()连接到socket.io服务器并不起作用

时间:2014-10-03 18:29:13

标签: javascript sockets websocket socket.io

此代码非常有用,并且连接到我运行的套接字服务器:

 var socket = io('http://localhost:8888');
  socket.on('news', function (data) {
    console.log(data);

    socket.emit('evento', { my: 'data' });
  });
socket.on('disconnect', function () {
   console.log('user disconnected');
  });
socket.on('connect', function () {
   console.log('user connect');
var data = 'ddsds';
       socket.emit('evento', { my: 'data' });


  });

另一方面,当我尝试使用WebSocket()时,它无法连接。这是不起作用的代码:

var socket = new WebSocket('ws://localhost:8888');
// Open the socket
socket.onopen = function(event) {

    // Send an initial message
    socket.send('I am the client and Im listening!');

}

    // Listen for messages
    socket.onmessage = function(event) {
        console.log('Client received a message',event);
    };

    // Listen for socket closes
    socket.onclose = function(event) {
        console.log('Client notified socket has closed',event);
    };
    socket.onerror = function(event) {
        console.log('error: ',event);
    };

这不是代码中的错误;我认为有一种不同的连接方式。我需要使用WebSocket();来工作。任何帮助将不胜感激!!

1 个答案:

答案 0 :(得分:1)

socket.io是在WebSocket之上运行的东西(使用WebSocket作为它支持的传输之一)。它在WebSocket之上添加了新的语义,因此您无法直接将socket.io方法和事件与WebSocket对象一起使用。

socket.io将选择WebSocket传输(如果可用),因此您不需要使用第二个示例 - 第一个应该正常工作并自动使用WebSockets(如果可用)。

请参阅this answerthis answer,了解如何使用socket.io的最小化,gzip压缩和缓存版本,使其更小更快。