Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js HTTP和HTTPS同时使用(Express.Io)_Node.js_Http_Express_Socket.io_Express.io - Fatal编程技术网

Node.js HTTP和HTTPS同时使用(Express.Io)

Node.js HTTP和HTTPS同时使用(Express.Io),node.js,http,express,socket.io,express.io,Node.js,Http,Express,Socket.io,Express.io,我已成功侦听端口443,可以通过https访问服务器,但无法通过http访问它 我尝试过使用http和https模块: app.http().io(); http.createServer(app).listen(80); https.createServer(options, app).listen(443); 但这次socket.io在浏览器中给出了404。我怎样才能解决这个问题?我需要使用的套接字连接,因为应用程序基于它。您应该将http重定向到https var express =

我已成功侦听端口443,可以通过https访问服务器,但无法通过http访问它

我尝试过使用http和https模块:

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

但这次socket.io在浏览器中给出了404。我怎样才能解决这个问题?我需要使用的套接字连接,因为应用程序基于它。

您应该将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)
 });

几天前也有同样的问题,这个GitHub问题有助于:

您的代码是正确的,它只需要一些更改。下面的代码是对您提供的snipped的稍加修改的版本

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() { });

我知道,但正如我所说,socket.io在客户端上给出了404错误。是的,但在您发布的代码中没有重定向。我没有添加它,谢谢。我的问题是socket。你能添加你的全部代码和相关代码吗?我已切换到socket.io+express。根本解决办法。
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() { });