这让我非常沮丧!如何使用Node.js使HTTPS套接字IO工作
我使用代理服务器,使得去myurl任何请求/ APP /用Node.js的在myurl回答:8001
我现在需要这个工作,通过https。容易....我想。
我有Apache从公用文件夹提供旧版本。这是独立的,当我完成这个工作时,它将被删除。但现在需要保持机智和方便。让加密设置在此。和https://myurl工作正常,当然显示来自公共文件夹的内容。
如果我去https://myurl:8001那么chrome会显示“网站无法访问”。如果我去http://myurl:8001它工作正常。我认为这是因为https默认端口是443.我有VPS没有专用,所以我不认为我可以改变这一点。当然,如果我改变了SSL端口,那么它不会为公共文件夹工作?
我会告诉你什么正在发生的基础知识;
app.js;
var express = require('express');
var app = express();
var serv = require('http').Server(app);
app.get('/',function(req, res) {
res.sendFile(__dirname + '/client/index.html');
});
app.use('/client',express.static(__dirname + '/client'));
serv.listen(8001);
console.log("Server started.");
var SOCKET_LIST = {};
var io = require('socket.io')(serv,{});
io.sockets.on('connection', function(socket){
socket.id = Math.random();
socket.x = 0;
socket.y = 0;
socket.number = "" + Math.floor(10 * Math.random());
SOCKET_LIST[socket.id] = socket;
socket.on('disconnect',function(){
delete SOCKET_LIST[socket.id];
});
});
setInterval(function(){
var pack = [];
for(var i in SOCKET_LIST){
var socket = SOCKET_LIST[i];
socket.x++;
socket.y++;
pack.push({
x:socket.x,
y:socket.y,
number:socket.number
});
}
for(var i in SOCKET_LIST){
var socket = SOCKET_LIST[i];
socket.emit('newPositions',pack);
}
},1000/25);
client/index.html;
<canvas id="ctx" width="500" height="500" style="border:1px solid #000000;"></canvas>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.0.3/socket.io.js"></script>
<script>
var ctx = document.getElementById("ctx").getContext("2d");
ctx.font = '30px Arial';
var socket = io.connect('http://www.myurl:8001', {path: "/socket.io"});
socket.on('newPositions',function(data){
ctx.clearRect(0,0,500,500);
for(var i = 0 ; i < data.length; i++)
ctx.fillText(data[i].number,data[i].x,data[i].y);
});
</script>
它的工作正常,因为代码是只有通过HTTP。我需要这个工作通过SSL
我需要这条线的工作时,其https;
var socket = io.connect('https://www.myurl:8001', {path: "/socket.io"});
这怎么可能?
任何帮助,非常感谢。
将路由从单个正斜杠更改为双精度后。我不再需要使用端口,而是可以使用url路径,所以var socket = io.connect('https://www.myurl:8001',{path:“/socket.io”});成为var socket = io.connect('https://www.myurl/theappfolder/',{path:“/socket.io”}); –