@safo4eg

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

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

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

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы
от 140 000 до 170 000 ₽
Stream Telecom Санкт-Петербург
от 120 000 ₽
от 120 000 до 250 000 ₽
04 июн. 2023, в 23:00
25000 руб./за проект
04 июн. 2023, в 22:57
1500 руб./за проект
04 июн. 2023, в 21:18
3000 руб./за проект