2014-11-05 2 views
0

Я успешно слушаешь порт 443 и может получить доступ к серверу по протоколу HTTPS , но я не могу получить доступ к нему с HTTP.HTTP и HTTPS же время (Express.Io)

var fs = require('fs') 
options = { 
    ca : fs.readFileSync('./ssl/site.com.pem'), 
    key: fs.readFileSync('./ssl/site.com.key'), 
    cert: fs.readFileSync('./ssl/site_com.crt') 
} 

var app = require('express.io') 
app.https(options).io() 
.... 
app.listen(443); 

Я попытался с помощью HTTP и HTTPS модулей:

app.http().io(); 
http.createServer(app).listen(80); 
https.createServer(options, app).listen(443); 

Но на этот раз socket.io дает 404 в браузере. Как я могу это решить? Мне нужно использовать соединение Express.Iosocket, потому что приложение основано на нем.

+0

Можете ли вы добавить свой код и код? – rahpuser

ответ

0

Вы должны перенаправить HTTP на HTTPS

var express = require('express'), 
app = express(), 
httpapp = express(); 

    //........................ 

var credentials = {key: privateKey, cert: certificate, ca: ca}; 
var httpsServer = https.createServer(credentials, app); 
var httpServer = http.createServer(httpapp); 


httpsServer.listen(443); 
httpServer.listen(80); 


httpapp.route('*').get(function(req,res){ 
    res.redirect('https://yourdomain.com'+req.url) 
}); 
+0

Я знаю, но, как я уже сказал, socket.io дает 404 ошибку на клиенте. – Lazy

+0

Да, но в вашем опубликованном коде не было перенаправления. – Paramore

+0

Я не добавил, спасибо. Моя проблема связана с сокет. – Lazy

0

Если бы та же проблема, несколько дней назад, и этот вопрос GitHub помогло: https://github.com/techpines/express.io/issues/17#issuecomment-26191447

Ваш код находится на правильном пути, это просто нужно некоторое изменения. Код ниже - слегка измененная версия обрезанного вами.

var fs = require('fs'), 
    express = require('express.io'); 

options = { 
    ca : fs.readFileSync('./ssl/site.com.pem'), 
    key: fs.readFileSync('./ssl/site.com.key'), 
    cert: fs.readFileSync('./ssl/site_com.crt') 
}; 

var app = express(); 
app.https(options).io(); 
var httpServer = require('http').createServer(app); 

// ... 

app.listen(443); 
express.io.listen(httpServer); 
httpServer.listen(80, function() { }, function() { }); 
+0

Я переключился на socket.io + express. Фундаментальное решение. – Lazy

+0

Это другой способ решить эту проблему. :) –

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