Курс Raku / Функційне, конкурентне, реактивне та веб-програмування / Веб-програмування / Простий HTTP-сервер
Очікування з’єднань
Щоб діяти як сервер, створіть сокет у режимі
слухання з аргументом :listen, задавши
адресу й порт, які слухати:
my $listener = IO::Socket::INET.new(
:listen,
:localhost('127.0.0.1'),
:localport(8080),
);:localhost('127.0.0.1') слухає на вашій власній машині,
а :localport(8080) — це порт, до якого мають приєднуватися
клієнти. Сокет тепер чекає, але жоден клієнт іще не прийшов.
Щоб узяти наступне вхідне з’єднання, викличте .accept.
Він блокує виконання, аж поки не приєднається клієнт, а
тоді повертає свіжий сокет, що представляє саме цю розмову:
my $conn = $listener.accept;
say 'a client connected';$listener і далі слухає нових клієнтів, тоді як
$conn є вашим каналом для розмови з цим конкретним.
Справжній сервер викликає .accept у циклі, обробляючи
кожного клієнта в міру його прибуття.
Ці приклади запускають на вашій власній машині; приєднуйтеся до них із браузера чи іншої програми за адресою
127.0.0.1:8080.
Отже, сервер — це просто повернутий навпаки сокет: замість
:host/:port, щоб набрати назовні, ви даєте
:listen разом із
:localhost/:localport, щоб чекати на дзвінки
всередину.
Практика
Виконайте 1 тест за змістом цієї теми.
Навігація курсом
← Простий HTTP-сервер | Тест — Очікування з’єднань →
💪 Або перейдіть одразу до вправи цього
розділу.