Una implementación de SSDP (Protocolo simple de descubrimiento de servicios) para Squeak/Pharo Smalltalk. Para cargar:
Metacello new
baseline: ' SSDP ' ;
repository: ' github://rydier/SSDP/repository ' ;
load.
Aunque SSDP es el protocolo de descubrimiento subyacente utilizado por uPnP, nunca estuvo completamente estandarizado. Esta implementación se basó en http://quimby.gnus.org/internet-drafts/draft-cai-ssdp-v1-02.txt, menos la funcionalidad de proxy, que se eliminó en una versión preliminar posterior. Entonces, en esencia, lo que se implementa es la última versión del borrador. La versión posterior contiene secciones mucho más amplias sobre los fundamentos del diseño, lo que la convierte en una lectura mucho mejor para aquellos que desean aprender de qué se trata un protocolo de descubrimiento y las compensaciones involucradas, pero con mucha menos densidad de información desde el punto de vista de alguien que implementa el protocolo.
Servidor SSDP:
| server |
server := SSDPServer v4SiteLocal.
server
offerServiceType: ' ssdp:testService '
atLocation: ' http:/test.local/ ' .
server shutDown.
Cliente SSDP:
| client |
client := SSDPClient v4SiteLocal.
client filter: ' ssdp:all '
whenAvailable: [ :resource |
resource printOn: Transcript .
' is available ' printOn: Transcript .
Transcript nextPut: Character cr. ]
whenUnavailable: [ :resource |
resource printOn: Transcript .
' is becoming unavailable ' printOn: Transcript .
Transcript nextPut: Character cr. ].
Se puede encontrar documentación más detallada en los comentarios de la clase.
Si lee el borrador posterior y descubre que algo no está de acuerdo, abra una incidencia o envíe una solicitud de extracción.
Si implementa una mejor manera de descubrir interfaces locales disponibles (que es la peor parte del código) para iniciar los oyentes SSDP, ¡apreciaría especialmente que me notificaran!
Migrado desde http://smalltalkhub.com/#!/~henriksp/SSDP usando https://github.com/peteruhnak/git-migration