Go Down

Topic: Websocket [ci siamo quasi] (Read 14870 times) previous topic - next topic

lesto

paoloP hai ragione! però NON usa l'IP ma il numero di socket... Quindi bisogna fare molta attenzione a quando un socket si disconnette
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

PaoloP

Segnalo questa pull request che però è stata inserita solo in parte nella attuale versione in sviluppo.
Peccato... le funzioni remoteIP e remotePort sono interessanti
--> https://github.com/ntruchsess/Arduino-1/commit/ca37de4ba4ecbdb941f14ac1fe7dd40f3008af75

pablos

#182
Apr 14, 2014, 11:12 pm Last Edit: Apr 14, 2014, 11:51 pm by pablos Reason: 1
Rieccomi ... ho ripreso dopo 9 mesi circa il progetto socket che avevo interrotto poichè senza funzionalità sugli smartphone non sapevo che farmene, avevo perso lo stimolo di continuare  :smiley-sweat:
Ricaricando i vecchi sketch e testandoli su android ora girano, mentre prima ottenevo "funzione socket non supportata" ora funziona bene, le nuove versioni lo hanno implementato.
Bene per un minuto circa  :smiley-roll-blue:, poi l'eccessiva velocità del traffico la velocità di visualizzazione va diminuendo fino a inchiodare gli smartphone, cosa che su pc non accade (dovrei risolvere riducendo o eliminando i char memorizzati sul textbox presente sull' htm).
Considerando che un anno fa avevo aumentato la velocità del micro 2560 del 50% la cosa mi lascia perplesso visto che ora ho librerie del core originali, il problema più grosso però è che delle 3000 e più  righe di sketch, le modifiche sulle librerie w5100, ethernet, client, server e il core di arduino che avevo fatto non le comprendo più.
Comunque quello che volevo dire è che ora ... [dico a te Lesto ahahahahahha] possiamo riprendere l'argomento  :D :D ... il mio IP è sempre quello di un anno fa, tieniti pronto per i test  :D :D.....

ciao ciao
no comment

lesto

AHAAH bhe sappi che ora so come funziona livello scambio HTTP i websocket. E se non erro le attuali vesioni di Client hanno la possibilità di gestire più client contemporanemente. e che obbligare le persone ad usre gli script è una cattivera bella e buona, ma per te la faccio xD

ps. un link moolto interessante se ti butti nell'html: http://caniuse.com/websockets
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

pablos

#184
Apr 15, 2014, 10:16 am Last Edit: Apr 15, 2014, 10:32 am by pablos Reason: 1
Grazie per il link molto interessante :)
Ma il problema non era lato client era su arduino, lo script che va messo sull'html per aprire la connessione tipo websocket sono meno di 10 righe mi sembra di averlo messo post indietro.
Per quanto riguarda le connessioni multiple per un micro così piccolo è assurdo quindi ho deciso di limitarlo a solo 1 connessione max, risolvo anche il problema autenticazione digest, nessun altro si può connettere se un client è connesso. Al massimo posso creare un codice master che tramite una request sulla 80 può disconnettere l'utente connesso sul sock 1 e prendere io il comando, ma questi sono dettagli che portano via tempo e voglia.
sock 0 su porta 80 [load pagine html]
sock 1 su porta 9990  [scambio dati websocket]
sock 2 su porta 8888 [server NTP]
sock 3 chiuso

Se tu intendi realizzare una rete lan tra arduini che comunicano tra loro tramite websocket senza caricare pagine html  ... bhe è tutta un altra faccenda che si potrebbe vedere.
Qui bisogna valutare cosa vogliamo fare di definitivo con questo sistema  XD
ciao
no comment

lesto

ok, chiariscimi cosa vuoi fare.

Non troppo tempo fa ho rilasciatyo un parser HTTP, che dato una serie di char in inpu (richiesta del browser) estrae URI richiesto, QueryString e post data, cosa che nessun webserver arduino fa che io sappia.

In oltre visto che NON prendo in input un Socket ma direttamente i char, sono agnostico da chi li produce (volendo potresti usare un browser via seriale, se ti garba), infine visto che NON mi occupo di inviare la risposta, non ho nemmeno il peso del codice necessario alla SD

http://forum.arduino.cc/index.php?topic=214652.0
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

pablos

#186
Apr 15, 2014, 03:17 pm Last Edit: Apr 15, 2014, 03:48 pm by pablos Reason: 1
Quote
chiariscimi cosa vuoi fare.

Niente di particolare, ho solo comunicato che è stato implementato l'"ambaradan"  XD anche sugli smartphone. A me serviva vedere arduino da browser in real-time e non in modalità polling che spreca risorse, per me l'obbiettivo è raggiunto, era diventata solo una questione d'onore ahahahahahahha  
Se hai qualche idea di impiego e migliore d'utilizzo di questo protocollo proponi pure, pare comunque che l'argomento interessi poco .... è stato letto 7700 volte, ma nessuno ha partecipato attivamente tranne (si può dire) noi 2.

Quote
Non troppo tempo fa ho rilasciato un parser HTTP ... cosa che nessun webserver arduino fa che io sappia

per visualizzare la request è sufficiente stampare il classico char c = client.read(); che troviamo in tutti gli esempi, una libreria che fa il parsing  l'abbiamo sempre avuta è la tinywebserver.cpp che +/- fa quello che hai fatto tu distingue il GET-POST-PUT il tipo di file richiesto  HTM-TXT-CSS-XML-JS-GIF-JPG-PNG-ICO-MP3 preparando la risposta adeguata, il DELETE mi manca però :)
Senza quella lib non sarei arrivato a fare un websoket con download e upload di file sulla SD, tra le atre cose è l'unica che mi ha chiarito quale è il problema di instabilità della ethernet shield .... questo Ovidiu Predescu's aveva le idee chiare :)

Quote
volendo potresti usare un browser via seriale

che intendi?

ciao




no comment

lesto

no, la tinty NON estare i dati di POST e di QueryString;
se io faccio

Code: [Select]
ipArduino?dato1=asd&dato2=dsa

e se invece invio una post i dati sono "nascosti" nel body.

la tiny li tira fuori? l'ultima volta che ho guardato no.  :smiley-mr-green:
In realtà le lib fano due cose diverse: la tiny nasce per servire pagine STATICHE da SD, la mia lib per ANALIZZARE le richieste. La generazione del contenuto è a carico dell'utente, che può generare la risposta dinamicamente al 100% oppure usare una SD

Se studi il protocollo REST scopri che la risposta deve essere un riassunto di ciò che hai fatto in base alla richiesta, formattata in XML o in Json; ciò vuol dire una creazione della risposta completamente dinamica, senza hoverhead dell'html. Infatti il rest PURO non è utilizzabile da browser (che tra l'altro non supportano PUT e DELETE), ma si usa il JS o degli applicativi ad-hoc.

Quote
che intendi?


che dato che la mia lib accetta char in input al parser, è completamente scolleta dalla classe Socket... per esempio, vuoi un webserver via xbee(che usa la seriale)? puoi farlo.
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

pablos

#188
May 02, 2014, 06:29 pm Last Edit: May 02, 2014, 06:43 pm by pablos Reason: 1
Quote
no, la tinty NON estare i dati di POST e di QueryString

Se spedisco "pincopallino" con metodo post alla libreria tiny e arduino risponde alla stringa riconoscendola, sei ancora dell'idea che non può estrarli? :)

ciao
no comment

lesto

yep, ho visto e creando un handler ad hoc puoi giocare con i dati post, ma rimane il problema delle query string.
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Go Up