Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Web-server
• Un canale doppio di I/O dove ogni lato del canale è un flusso di byte non
strutturato, sopra quello si può mettere un server http
La cosa bella della stream è : garantisce un servizio affidabile, inoltre non
essendo strutturata consente una strutturazione ad alto livello senza doversi
preoccupare della dimensione dei messaggi a basso livello.
Aprire un socket equivale ad aprire dei buffer che servono per leggere e scrivere
dalla socket
Quando arriva un client cosa succede? Manda un messaggio SYN, il messaggio arriva
al buffer, se non c’è ne sono altri il sistema operativo legge il messaggio e manda
indietro un messaggio SYN al client, inoltre viene creato un altra coppia di buffer
che sarà utilizzato per la comunicazione client server.
È utili avere il target dell’host perchè non è detto che quando instauro una
comunicazione con l’host dialoghi direttamente con l’host finale, ma è possibile
che ci sia un proxy di mezzo e esso deve sapere a chi mandare il messaggio.
User Agent, serve per decidere come inviare il messaggio di risposta.
Connection, identifica il tipo di connessione: persistente o non persistente.
Quando termina l’ header abbiamo un carriege return e aggiuntivo
Siamo liberi di
strutturare il body come
vogliamo(usare JSON o
xml)
Stato dell’utente
I web server sono stateless, ogni messaggio che viene inviato e ho ricevuto
risposta attraverso il socket, il web server non mantiene in memoria di ciò che gli
ha detto.
Mantenere la sessione per ogni client sarebbe molto costoso soprattutto se ci sono
errori.
Cookie
Abbiamo delle thread che si interfacciano agli agenti remoti, immaginiamo di avere
un Publish thread in attesa su una porta, abbiamo un remote publisher che si
connette al publish thread locale e gli comunica il soggetto che vuole fare la
connessione, il quale sottoscriverà il soggetto nella subject table, quando
qualcosa viene pubblicato viene inviato alla thread che lo ha sottoscritto il quale
è connesso tramite TCP al soggetto. Queste operazioni sono svolte da mosquitto.
Subject mosquitto esistono diversi tipi di sottoscrizioni, e sono identificati dal
loro pathname assoluto nel subject tree es: B/+/x il simbolo # corrisponde a *
utile in fase di debugging.
Come si fa?
• Connection bridge-01
• address indirizzo a cui connettersi
• topic: # out 0(sottoscrive tutti I subject e si connette per pubblicare)
• topic: # in 0mosquitto client in java
Mentre nella macchina locale
• connectio bridge-01
• address indirizzo su cui gira mosquitto
• topic: # out b1/ “”
• topic: # in 0 “” b2/
Interfacciarsi a MSQTT