세 개의 서버가 있습니다
동일한 IP : 포트 조합을 사용하여 세 서버를 모두 실행하고 싶습니다. 세 서버 모두 호스트 이름이 다릅니다. 예 /etc/hosts
를 들어 세 도메인 이름을 모두 동일한 IP로 확인하기 위해 로컬 DNS를 업데이트했습니다 127.0.0.1
.
내가 사용하고 VHost
호스트의 기준으로 요청을 해결하기 위해 적절한 서버로 요청을 지시. 이에 대한 코드는 다음과 같습니다.
var express = require('express');
var vhost = require('vhost');
var app = express();
var https = require('https');
var mainServer = <hostname1> ;
var socketServer1 = <hostname2> ;
var socketServer2 = <hostname3>;
var server = https.createServer(<options>, app);
server.listen(<somePort>,function(){
console.log('VHost running');
});
var mainApp = require('./app.js');
var socketServerApp1 = require('./socketServer1');
var socketServerApp2 = require('./socketServer2');
app.use(vhost(mainServer, mainApp));
app.use(vhost(socketServer1, socketServerApp1(server)));
app.use(vhost(socketServer2, socketServerApp2(server)));
위 코드에서 직면 한 문제는 두 소켓 서버를 모두 실행하려고하면 브라우저에서 다음과 같은 오류가 발생한다는 것입니다.
WebSocket connection to 'wss://socketServer1:8443/socket.io/?EIO=3&transport=websocket&sid=qlSXz3os5eDI8c_EAAAC' failed: Connection closed before receiving a handshake response
그러나 한 번에 하나의 소켓 서버 만 실행되는 경우 해당 소켓 서버에 대해 문제가 해결됩니다. 즉, app.use 중 하나에 다음과 같이 주석을 추가하면 다음과 같습니다.
app.use(vhost(mainServer, mainApp));
app.use(vhost(socketServer1, socketServerApp1(server)));
// app.use(vhost(socketServer1, socketServerApp2(server)));
동일한 IP : 포트 조합에서 두 개의 소켓 서버를 실행할 수 없습니까?
문제는 두 소켓 서버에 별도의 목록 작성기가있어서 오류를 일으켰다는 것입니다. 소켓리스트 너를 가상 호스트 앱으로 옮기면 문제가 해결됩니다. 다음은 코드입니다.
var express = require('express');
var vhost = require('vhost');
var app = express();
var https = require('https');
var socketio = require('socket.io');
var mainServer = <hostname1> ;
var socketServer1 = <hostname2> ;
var socketServer2 = <hostname3>;
var server = https.createServer(<options>, app);
var io = socketio.listen(server);
server.listen(<somePort>,function(){
console.log('VHost running');
});
var mainApp = require('./app.js');
var socketServerApp1 = require('./socketServer1');
var socketServerApp2 = require('./socketServer2');
app.use(vhost(mainServer, mainApp));
app.use(vhost(socketServer1, socketServerApp1(io)));
app.use(vhost(socketServer2, socketServerApp2(io)));
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다