Ö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.
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:
- 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.
- 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:
Shout-bussen är öppen.
Sam: Hej klassen
Sam: Test 2