2014-10-03 2 views
0

이 코드는 위대한 작품을 내가 실행 한 소켓 서버에 연결 : 내가 사용하려고 할 때 다른 한편으로이 작동하지 않습니다

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

socket.io은 WebSocket (지원하는 전송 장치 중 하나 인 WebSocket 사용) 위에 실행되는 항목입니다. WebSocket 위에 새로운 의미를 추가하므로 socket.io 메서드 및 이벤트를 WebSocket 객체와 함께 직접 사용할 수 없습니다.

socket.io은 사용 가능한 경우 WebSocket 전송을 선택하므로 두 번째 예제를 사용할 필요가 없습니다. 첫 번째 예제는 정상적으로 작동하고 WebSocket을 자동으로 사용합니다 (사용 가능한 경우).

최소화 된 gzip 및 캐시 된 버전의 socket.io를 사용하는 방법은 this answerthis answer을 참조하십시오. 이렇게하면 작고 빨라집니다.

+0

예. 문제는 socket.io가 ~ 60kb이며 웹 소켓을 직접 사용하면 약 60kb가 절약됩니다. 서버 측에서는 socket.io를 실행하는 것을 좋아합니다. 사이트는 하루 종일 2000 개가 넘는 동시 접속이 이루어지며 최대한 빨리 페이지를로드하려고합니다. – nodejsj

+0

@stacknoob - 가장 작은 크기의 socket.io 버전으로 전환해야합니다 (http://stackoverflow.com/a/9015260/816620). 문제가 무엇이든 관계없이 socket.io 인터페이스를 일반 WebSocket 및 socket.io 코드와 함께 사용할 수 없습니다. – jfriend00

+0

@stacknoob - http://stackoverflow.com/a/14589826/816620에 따라 gzip 및 브라우저 캐싱을 활성화 할 수도 있습니다. 소형화와이 두 가지 기능을 사용하면 훨씬 더 작아집니다. – jfriend00