RTCmulitiConnection 服务器在域名中不起作用
服务器代码:https ://github.com/muaz-khan/RTCMultiConnection-Server
从本地主机连接到服务器时,它可以正常工作,但从公共 IP 或域名返回 400 错误
server.js 代码
// http://44.238.232.131:9001
// http://44.238.232.131:9001
const fs = require('fs');
const path = require('path');
const url = require('url');
var httpServer = require('http');
const ioServer = require('socket.io');
const RTCMultiConnectionServer = require('./node_scripts/index.js');
var PORT = 9001;
var isUseHTTPs = false;
const jsonPath = {
config: 'config.json',
logs: 'logs.json'
};
const BASH_COLORS_HELPER = RTCMultiConnectionServer.BASH_COLORS_HELPER;
const getValuesFromConfigJson = RTCMultiConnectionServer.getValuesFromConfigJson;
const getBashParameters = RTCMultiConnectionServer.getBashParameters;
var config = getValuesFromConfigJson(jsonPath);
config = getBashParameters(config, BASH_COLORS_HELPER);
// if user didn't modifed "PORT" object
// then read value from "config.json"
if(PORT === 9001) {
PORT = config.port;
}
if(isUseHTTPs === false) {
isUseHTTPs = config.isUseHTTPs;
}
function serverHandler(request, response) {
// to make sure we always get valid info from json file
// even if external codes are overriding it
config = getValuesFromConfigJson(jsonPath);
config = getBashParameters(config, BASH_COLORS_HELPER);
response.writeHead(200, {
'Content-Type': 'text/plain'
});
response.write('RTCMultiConnection Socket.io Server.\n\n' + 'https://github.com/muaz-khan/RTCMultiConnection-Server\n\n' + 'npm install RTCMultiConnection-Server');
response.end();
}
var httpApp;
if (isUseHTTPs) {
httpServer = require('https');
// See how to use a valid certificate:
// https://github.com/muaz-khan/WebRTC-Experiment/issues/62
var options = {
key: null,
cert: null,
ca: null
};
var pfx = false;
if (!fs.existsSync(config.sslKey)) {
console.log(BASH_COLORS_HELPER.getRedFG(), 'sslKey:\t ' + config.sslKey + ' does not exist.');
} else {
pfx = config.sslKey.indexOf('.pfx') !== -1;
options.key = fs.readFileSync(config.sslKey);
}
if (!fs.existsSync(config.sslCert)) {
console.log(BASH_COLORS_HELPER.getRedFG(), 'sslCert:\t ' + config.sslCert + ' does not exist.');
} else {
options.cert = fs.readFileSync(config.sslCert);
}
if (config.sslCabundle) {
if (!fs.existsSync(config.sslCabundle)) {
console.log(BASH_COLORS_HELPER.getRedFG(), 'sslCabundle:\t ' + config.sslCabundle + ' does not exist.');
}
options.ca = fs.readFileSync(config.sslCabundle);
}
if (pfx === true) {
options = {
pfx: sslKey
};
}
httpApp = httpServer.createServer(options, serverHandler);
} else {
httpApp = httpServer.createServer(serverHandler);
}
RTCMultiConnectionServer.beforeHttpListen(httpApp, config);
httpApp = httpApp.listen(process.env.PORT || PORT, process.env.IP || "0.0.0.0", function() {
RTCMultiConnectionServer.afterHttpListen(httpApp, config);
});
// --------------------------
// socket.io codes goes below
ioServer(httpApp).on('connection', function(socket) {
RTCMultiConnectionServer.addSocket(socket, config);
// ----------------------
// below code is optional
const params = socket.handshake.query;
if (!params.socketCustomEvent) {
params.socketCustomEvent = 'custom-message';
}
socket.on(params.socketCustomEvent, function(message) {
socket.broadcast.emit(params.socketCustomEvent, message);
});
});
它为域或 ip 返回 400 错误错误
运行服务器后,它只在 http://localhost:9001 上运行
但不在我的 Aws 公共 IP 或映射域中
请帮助我任何一个