2016-03-28 2 views
0

Когда я хочу подключиться к серверу узлов через клиент, переключение протокола выполняется навсегда. Может кто-нибудь сказать мне, почему это происходит?Node.js и Socket.io: при переходе протокола ssl в ожидании вечно

Вот код на стороне сервера:

var https = require('https'); 
var fs = require('fs'); 

var options = { 
    key: fs.readFileSync('*******'), 
    cert: fs.readFileSync('*******'), 
    passphrase: '*******', 
    rejectUnauthorized: false 
}; 

var app = https.createServer(options); 
var io = require('socket.io').listen(app); 
app.listen(3700); 

io.sockets.on('connection', function (client) { 

    client.on('join', function() { 

     // 
    }); 
}); 

А вот на стороне клиента одно:

var baseURL   = getBaseURL(); 
var socketIOPort  = 3700; 
var socketIOLocation = baseURL + socketIOPort; 
var socket   = io.connect(socketIOLocation, {secure: true, rejectUnauthorized: false}); 

function getBaseURL() 
{ 
    return (location.protocol + "//" + location.hostname + ":" + location.port); 
} 

Я использую самозаверенные сертификаты на локальном хосте.

Mozilla сообщает, что соединение отменено и пытается восстановить соединение, Chrome говорит, что статус «101 Switching protocols» и время (латентность) - «Ожидание».

ответ

1

getBaseURL() уже включает в себя порт (location.port), но затем вы присоединяетесь к этому 3700. Удалите location.port от getBaseURL(), и это должно решить эту проблему.

+0

mscdex, к сожалению, это не помогло. Он по-прежнему показывает, что message = ( – eldorjon

+0

Что делает 'console.log (socketIOLocation)' show? – mscdex

+0

Кроме того, ваш клиент html и javascript обслуживается через https? – mscdex

Смежные вопросы