Курс по 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 сървър   |   Тест — Слушане


💪 Или преминете направо към упражнението към този раздел.