【发布时间】:2017-11-17 23:00:11
【问题描述】:
这让我很沮丧!
我正在使用代理,因此任何发往 myurl/APP/ 的请求都由 myurl:8001 处的 node.js 回答
我现在需要这个在 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);
客户端/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('myurl:8001', {path: "/socket.io"});变成了 var socket = io.connect('myurl/theappfolder', {path: "/socket.io"});