2017-01-03 2 views
0

вот моя история:

- У меня есть сайт с SSL: https://domain.com
- И я хочу, чтобы сделать живой чат, так что я uped сервер Linux с node.js
- Для Linux сервер я сделал самостоятельно подписанный сертификат

Вот мой код сервера (не все OFC, только основы):Nodejs HTTPS socket.io

var options = { 
 
    key: fs.readFileSync("key.pem"), 
 
    cert: fs.readFileSync("cert.pem"), 
 
    requestCert: true 
 
}; 
 

 
var app = express(options); 
 
var server = https.createServer(app); 
 
var io = socket.listen(server).listen(80); 
 

 
io.on('connection', function (socket) { 
 
    socket.emit('connectedToServer', { conncted: true }); 
 
});

Вот мой код клиента:

var socket = io.connect('https://XXX.XXX.XXX.XX', {secure: true, port:80}); 
 
socket.on('connectedToServer', function (data) { 
 
    socket.emit('firstTimeConnected', id); 
 
});

OK! и у меня есть ошибка на стороне клиента: net :: ERR_CONNECTION_REFUSED (если я запускаю клиент с http, - WS работает, но получает предупреждение о «смешанном контенте», который заблокирован браузером).
Действительно спасибо 4 ур помочь!

ответ

0

Ваш код выглядит странно. Я не уверен, что он делает то, что вы думаете. Также я не уверен, почему вы слушаете порт 80 вместо стандартного 443. Вы хотите всегда использовать URL-адреса, такие как https://www.examle.com:80/?

Попробуйте что-то вроде этого:

var options = { 
    key: fs.readFileSync("key.pem"), 
    cert: fs.readFileSync("cert.pem"), 
    requestCert: true 
}; 
var app = require('express')(); 
var server = require('https').Server(options, app); 
var io = require('socket.io')(server); 

и теперь называют listen на server:

server.listen(...); 

и использование по умолчанию порты (80 для HTTP, 443 для HTTPS), если вы не хотите, чтобы включить порт явно в каждом URL.

+0

ОК, получите его. Изменено все, как в урском примере. Но теперь у меня есть ошибка на клиенте: «net :: ERR_INSECURE_RESPONSE». И код: var socket = io.connect ('https: // xxxxxxx', {secure: true, port: 443}); –