Övning 29 / 29

Shout-bussen

Beräknad tid: 25 min

Varför

Hittills har du mest pratat med dig själv på ett privat topic. En bus är ett delat ämne: alla som prenumererar ser samma meddelanden. Det är så en enkel statuskanal i ett klassrum eller på en labbänk kan se ut.

Den nya idén

Shout-buss — kursens gemensamma topic nackademin/shout. Vem som helst i klassen kan publicera. Alla lyssnare får raden. Ingen historik — bara det som skickas medan du lyssnar.

Håll isär två program. skrik_lyssna.py prenumererar och skriver ut. skrik_skicka.py läser en rad från tangentbordet och publicerar namn plus text. Två fönster, samma mönster som övning 26.

En rad till bussen — skiss för skickaren
namn = input("Namn: ")
text = input("Meddelande: ")
publish.single(
    "nackademin/shout",
    payload=f"{namn}: {text}",
    hostname="mqtt.progress42.com",
    port=1883,
)

En loop runt input låter dig skicka flera rader utan att starta om. Tom rad kan betyda avsluta. Lyssnaren använder subscribe.callback precis som förut, men topic är nackademin/shout.

Skriv bara kursvänlig text. Inga lösenord, personuppgifter eller elaka tillrop. Brokern är gemensam och meddelanden syns hos andra studenter.

Uppgift

Skapa två filer:

  1. skrik_lyssna.py — prenumererar på nackademin/shout hos mqtt.progress42.com:1883 och skriver ut varje payload som text. En start-rad: Shout-bussen är öppen.
  2. skrik_skicka.py — frågar efter ditt namn en gång, sedan meddelanden i en loop. Varje icke-tom rad publiceras som Namn: text. Tom rad avslutar.

Starta lyssnaren först. Skicka minst två rader från din skickare. Be gärna en klasskamrat skicka en rad så att du ser att bussen är gemensam.

Förväntat resultat

Lyssnarfönstret efter två egna rader. Namnet är ditt. Exempel:

python3
Shout-bussen är öppen.
Sam: Hej klassen
Sam: Test 2

Kör fast?