@safo4eg

Как работает открытие сокета на сервере?

Здравствуйте, помогите мне разобраться с сокетами на php и подключениям к ним со стороны клиента, очень много перерыл информаци, но все равно не доходит как это все работает, выделил основные вопросы:

1) В проекте на php у нас есть файл , в котором мы создаём сокет, например tcp://ip:port, там же у нас ожидается подключение к этому сокету, проект загружаем на хостинг, правильно ли я понимаю, что пользователь заходит на сайт, с его браузера отправляются http запросы на ip:80, отображаются страницы и на любой странице мы можем отправить http-запрос на файл, содержащий открытие сокета, после этого он подключается к нему и с любой страницы сайта он сможет уже отправлять данные через этот сокет, при этом другой пользователь заходит на сайта и может подключиться к уже открытому сокету? То есть они оба подключены к сокету и в реальном времени могут через него данными обмениваться?

Если у нас есть такой файл в проекте , который открывает новый сокет, нужно чтобы сначала кто-то из пользователей http-запросом этот файл стригерил? И после этого к нему смогут другие подключаться или мы загружаем проект , сами исполняем этот файл и сокет уже постоянно открыт, а пользователи при заходе уже подключаются к нему?

2) Ещё вот такое вопрос, когда мы на хостинге покупаем место под сайт, то есть где-то там есть сервер на котором лежит папка с нашим проектом , выходит это как наш компьютер, мы можем несколько портов открывать на нем под свои нужды, то есть по умолчанию 80 это для http запросов, а я ещё 3 порта с помощью создания сокета на php под другие подключения могу резервировать и вообще сколько угодно?
  • Вопрос задан
  • 164 просмотра
Пригласить эксперта
Ответы на вопрос 2
@402d
начинал с бейсика на УКНЦ в 1988
7 лет назад собирал себе на PHP упрощенный dns сервер
https://github.com/Muraveiko/DNS
Ожидает входящего соединения, на любой запрос ресолвит хост в ип адрес заглушки.
Запуск был оформлен как демон (служба) .
Увы, сами баш скрипты и прочее за давностью лет не сохранились.
Суть в том, что все это само стартовало при загрузке/перезагрузке сервера и можно было сделать с консоли
аналогично всем остальным службам start/stop
Ответ написан
Комментировать
@rPman
Во первых веб браузеры не умеют работать с обычным универсальным tcp/udp советами, им нужен определенный протокол, т.е. приложение, которое слушает сокет (socket_listen) должно работать по совместимому протоколу (сейчас это http, его расширение websocket, а для udp - webrtc).

Когда браузер подключается к сокету, слушала приложение получает событие и сокет клиента - соединение от браузера и дальше уже работает с ним (обычно такие приложения делают асинхронными, чтобы можно было одновременно обрабатывать несколько подключений, иначе клиента будет ждать, когда он освободится, или вылетают по таймауту)

Про 'ваш сервер', я встречал виртуальный хостинг, обычно точно дешёвые так делают, когда сервер сидит в локальной сети, а порты по тарифу подбрасываются nat, т.е. Только разрешенные порты так работают
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы