이것은 나를 미친 듯이 실망시킵니다! 내가 myURL이 갈 어떤 요청/APP /는 myURL이에서 Node.js를 응답되도록 프록시 사용하고node.js를 사용하여 HTTPS를 통해 소켓 IO를 작동시키는 방법
: 8001
는 지금 HTTPS를 통해 작업이 필요합니다. 쉬운 .... 나는 생각했다.
공용 폴더에서 이전 버전을 제공하는 Apache가 있습니다. 그것은 혼자 서 있고, 내가 이것을 끝내면, 그냥 제거 될 것입니다. 그러나 당분간은 재치있게 접근 할 수 있어야합니다. 이것에 암호화가 설정되도록합니다. https://myurl은 잘 작동하여 물론 공용 폴더의 콘텐츠를 보여줍니다.
내가 https://myurl:8001으로 이동하면 크롬에 '사이트에 연결할 수 없음'이라고 표시됩니다. 내가 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 ('https : //www.myurl : 8001', {path : "/socket.io"}); 된되었다 var socket = io.connect ('https : //www.myurl/theappfolder/', {path : "/socket.io"}); –