2016-08-30 2 views
0

HTTPS 웹 사이트에서 개인 사용 가능 스크립트를 사용할 수 있습니다. 사용자 스크립트는 Socket.io 클라이언트 API를 사용하여 PC의 Node.js TCP 서버에 연결합니다.Socket.io 브라우저 클라이언트를 로컬 Node.js 네트워크 서버에 연결

서버는 클라이언트가 서버에 연결 중임을 알지만 클라이언트는 연결을 인식하지 않고

자원을로드하지 못했습니다 브라우저 콘솔에서이 오류를 수신 : 순 :: ERR_TIMED_OUT

나는이 오류를 해결하는 방법을 몰라,하지만 난 그게로 인해 수있는 뭔가가 있으리라 믿고있어 Socket.io 및 Net이 서로 호환되지 않거나 웹 사이트에서 연결이 허용되지 않습니다.

다음은 그러나 웹 소켓 및 HTTP 프로토콜을 사용할 수 있습니다, 내 클라이언트 코드

socket.on('connect', function() { 
    console.log('CONNECTED TO SERVER'); 
    socket.on('message', function(msg) { 
     messageReceive(msg); 
    }); 
    setInterval(runRoutine, 1000); 
}); 

브라우저에서 직접 TCP 소켓을 사용할 수 없습니다 내 단절 코드

var net = require('net'); 

var clients = []; 

var port = 8841; 

net.createServer(function(socket) { 

    socket.name = socket.remoteAddress + ':' + socket.remotePort; 
    clients.push(socket); 

    broadcast(socket.name + " has connected to the server", socket); 

    socket.on('message', function(data) { 
     broadcast(socket.name + "<>" + data, socket); 
    }); 

    socket.on('end', function() { 
     clients.splice(clients.indexOf(socket), 1); 
     broadcast(socket.name + '<>disconnected', socket); 
    }); 

    function broadcast(message, sender) { 
     console.log(message); 
     clients.forEach(function(client) { 
      if(client === sender) return; 
      //client.write(message); 
     }); 
    } 

}).listen(port); 

console.log("Chat server running at port " + port); 
+0

서버 측의 '소켓'은 socket.io 소켓이 아닌 TCP 소켓이므로 '메시지'이벤트가 발생하지 않으므로이 작업을 수행 할 수 없습니다. 어쨌든 socket.io 서버 대신 TCP 서버를 사용하는 이유는 무엇입니까? – mscdex

답변

0

Javascript를합니다. Soccket.io는 가능한 경우 웹 소켓을 사용합니다. 그래서 서버 측은 websocket 연결을 청취해야합니다. 예제보기 here

관련 문제