Я размещаю веб-сайт на git страницах, который открывает видеопоток при определенных щелчках мыши через безопасный веб-узел (wss) с использованием этой библиотеки: github.com/websockets/ws. При подключении видео со страницы http через простой веб-сокет (ws) все было в порядке, но я понял, что страница github будет размещена через https, а firefox не разрешает незащищенные подключения через веб-сокет через https, требуется wss.
Для этого я выполнил шаги на странице ws websockets, и сервер websocket как бы «прячется» за https-сервером, который выполняет рукопожатие сертификата. Проблема в следующем: если я обычно использую свою веб-страницу и открываю ссылку, которая запускает wss-соединение с видео, оно не работает, сервер не знает о его существовании. Если я сначала захожу на сервер напрямую через IP и порт, используя ссылку https://IP: 999 , он извлекает сертификаты, и с этого момента веб-сайт работает бесконечно.
Есть ли способ сделать это естественно, что не требует, чтобы я пытался посетить безголовый сервер, чтобы выполнить рукопожатие сертификата? Я просто хочу открыть wss-соединение, но накладные расходы, связанные с необходимостью прямого посещения сервера для получения сертификатов, кажутся немного странными.
Настройка сервера выглядит так:
const server = https.createServer({
cert: fs.readFileSync('./cert/cert.pem'),
key: fs.readFileSync('./cert/key.pem'),
}, function (req, res) {
console.log(new Date() + ' ' +
req.connection.remoteAddress + ' ' +
req.method + ' ' + req.url);
res.writeHead(200);
res.end("hello foobarbackend\n");
});
this.wsServer = new ws.Server({
server
})
this.wsServer.on("connection", (socket, request) => {
return this.onSocketConnect(socket, request)
})
server.listen(9999, '0.0.0.0');
После получения сертификатов через https: //: 9999 я могу без проблем воспроизводить видео в этом браузере по адресу wss: //: 9999, я что-то упускаю.