У меня есть доменное имя.
У меня Raspberry Pi в качестве веб-сервера.
Я отредактировал запись домена A, чтобы указать на IP моего сервера.
Через letsencrypt я получил сертификат, и теперь веб-сайт работает по протоколу https (поддерживаю http для целей отладки)
Я работаю над приложением для обмена сообщениями, которое использует socket.io, но использует apache + php для низкоуровневых вещей
Так что в основном apache слушает 80 и 443 и nodejs слушает 3000
Очевидно, что если я захожу на мой сайт через http - все работает нормально, и сервер, и клиент зарегистрируйте соединения.
Если я захожу на него через https - Chrome выдает net :: ERR_CONNECTION_CLOSED ошибка (в консоли при попытке подключения к socket.io через порт 3000. Сам сайт загружается нормально).
Клиент:
var socket = new io(window.location.host+":3000", { secure: true });
socket.on("connect", function() {
console.log('success')
});
Сервер:
const io = require("socket.io");
const server = io.listen(3000);
console.log("Server started");
server.on("connection", function (socket) {
console.log("+USER");
socket.emit("hello", "Connected");
});
Я действительно не хочу использовать express или что-либо еще в этом отношении для сделайте все как можно меньше, тем более что у меня уже есть мы б-сервер работает.
Как правильно настроить его, чтобы пользователи могли подключаться к моему серверу socket.io через порт 3000 при посещении сайта по протоколу https?
Обновление : Из каких кажется, я думаю, что это проблема типа CORS. Пользователь, посещающий веб-сайт через https, пытается подключиться к незащищенному порту (в данном случае 3000), даже если это тот же домен? Я думаю, что это будет нет-нет для многих, если не для всех браузеров. На ум приходит решение просто перенести все это с apache на nodejs серверный модуль и назначить вручную порт 3000 как безопасный через модуль https, но я понятия не имею, как это сделать, и я бы действительно хочу сохранить мой apache в качестве веб-сервера, потому что, по крайней мере, я с ним знаком больше, чем что-либо еще.