La società con la quale ci stiamo integrando è un'azienda di sicurezza delle porte che realizza schede RFID e scanner per porte. Esegui la scansione della tua carta, la porta si apre e ti lascia entrare. Permettono l'integrazione di terze parti tramite il loro server websocket. Pubblicano "Eventi" sul loro server. "Bob Foobar ha scansionato la sua carta al portman # 14 alle 8:12 del 2/26/2018" tutto in formato json. Abbiamo bisogno di ascoltare costantemente tutti questi eventi e registrarli nel nostro database.
Diamo ai nostri clienti due opzioni. Cloud ospitano il nostro servizio in un ambiente SAAS multi-tenant. Ma permettiamo anche ai clienti di auto-ospitare se vogliono. Se avessimo solo l'opzione SAAS, questa sarebbe una soluzione semplice. Basta creare un servizio Windows che viene eseguito sui nostri server per iscriversi al proprio server websocket. Ma, per i nostri clienti self-host, speriamo di evitare di chiedere loro di installare un servizio di Windows. Stiamo cercando altri modi per farlo accadere. Ma, inoltre, non vogliamo chiedere loro di aprire una finestra del browser e tenerla aperta.
Devo iscrivermi a una websocket remota e ho bisogno di farlo in modo che sia sempre in ascolto, anche senza l'interazione dell'utente. Questo non è un servizio di tipo chat che è incentrato sull'utente. Dobbiamo essere sempre in ascolto degli eventi così come appaiono sul server remoto.
Ho letto su System.Net.WebSockets e ho visto molti esempi. Ho creato un proof-of-concept come servizio di Windows e funziona.
Ma ... un servizio Windows è davvero l'unico modo per iscriversi sempre al server Websocket remoto senza l'interazione dell'utente? Quali altre opzioni ho? E, è possibile eseguire questo rigorosamente utilizzando IIS?