2014-10-10 2 views
1

socket.io을 기존 응용 프로그램과 함께 사용하려고합니다. 내 응용 프로그램은 https://somedomain.com에서 실행됩니다. 그것은 IO 서버 소켓으로 연결하려면이 코드를 사용하여 :보안 socket.io 서버에 연결할 수 없습니다. ERR_SSL_PROTOCOL_ERROR

var io = require('socket.io').listen(3456); 

io.sockets.on('connection', function(socket) { 
    console.log("dupa"); 
    socket.on('message', function() {}); 
    socket.on('disconnect', function() {}); 
}); 

dupa는 서버 측에서 크롬 브라우저에 표시되지 않습니다 :

var socket = io('https://localhost:3456/'); 
    socket.on('connect', function() { 
    socket.send('hi'); 

    socket.on('message', function (msg) { 
     // my msg 
    }); 
    }); 

내 socket.io 서버는 들어오는 연결을 청취하기 위해이 코드가 콘솔을받습니다.

GET https://localhost:3456/socket.io/?EIO=3&transport=polling&t=1412901063154-0 net::ERR_SSL_PROTOCOL_ERROR 

어떻게하면 가능합니까?

답변

0

소켓 서버가 SSL을 사용하고 있지 않습니다. 그런 다음

var socket = io.connect('https://localhost', {secure: true}); 

, 당신도 안전 할 수 있도록 소켓이 필요합니다 :

우선합니다 (HTTPS하지만 SSL + socket.io 가끔 이상한 물건이하는과 아마 중복) 클라이언트에 보안 매개 변수를 추가

var privateKey = fs.readFileSync('YOUR SSL KEY').toString(); 
var certificate = fs.readFileSync('YOUR SSL CRT').toString(); 
var ca = fs.readFileSync('YOUR SSL CA').toString(); 

var io = require('socket.io').listen(3456,{key:privateKey,cert:certificate,ca:ca}); 
+0

음 'YOUR SSL KEY'등은 어디에서 찾을 수 있습니까? 내가 실행하는 응용 프로그램은 내 IIS의 창에 있지만 https : somedomain.com을 실행하도록 구성되었으며 ID는 확인되지 않습니다 (브라우저 URL 줄에 https : //가 표시됨). 나는 여기서 내가 이해할 수 있기를 바란다. – spirytus

+0

파일에있는 어딘가에있을 것입니다, 나는 어떻게 IIS가 그것을 저장 모르겠다. key, ca 및 cert는 모두 파일입니다. – xShirase

관련 문제