Un'API WebSocket, messaggio di risposta

0

Sono scrivendo un'applicazione Web per copiare file tra server .

Ho deciso di scrivere un server WebSocket che riceverà e invierà messaggi rilevanti (cioè comunica con un browser), avvia e ferma i processi di copia.

Di conseguenza, in base alla mia decisione di progettazione, esiste al massimo un processo di copia per un determinato utente. Un utente non "vede" i processi di copia di altri utenti. Ma un utente può aprire più finestre del browser e quindi avere più connessioni al mio server WebSocket.

Quando inizia un processo di copia, l'utente pertinente riceve il messaggio { "type": "Started" } JSON. Questa potrebbe essere una risposta alla richiesta di iniziare a copiare i file dalla finestra corrente o da un'altra finestra dello stesso utente.

Quando si riceve il messaggio { "type": "Started" } , il JavaScript dovrebbe mostrare la finestra di dialogo "Copia file ..." con il pulsante "Interrompi" (per interrompere la copia nel mezzo). La finestra di dialogo si chiude automaticamente se la copia termina (con o senza errori).

Inoltre, se la copia non può essere avviata per qualche motivo, il browser riceve un messaggio { "type" : "Error" } .

Ora la mia domanda: il server dovrebbe rispondere immediatamente con un messaggio (forse { "type": "StartReply" } ) dopo l'inizio della copia? O è sufficiente che comunque riceveremo il messaggio { "type": "Started" } nel prossimo futuro?

Inoltre: dovrei numerare i messaggi "Start" e includere il suo numero in un messaggio "StartReply", per sapere quale messaggio è la risposta su quale?

    
posta porton 15.07.2016 - 17:47
fonte

1 risposta

0

Se riceviamo una risposta immediata { "type": "StartCopying" } dal server su richiesta del browser per iniziare a copiare, il flusso di lavoro potrebbe essere il seguente:

  1. Mostra il widget "Invio di dati ..." e disabilita l'interfaccia utente nella pagina.

  2. Invia la richiesta di copia al server.

  3. Dopo aver ricevuto la "risposta immediata", mostra la finestra di dialogo "Copia file ..." con il pulsante "Interrompi". (In alternativa, potremmo ricevere un messaggio di errore dal server, mostrare questo messaggio in un avviso e chiudere il widget "Invio di dati ...".

  4. Ignora il messaggio "avviato" dal server, perché la finestra di dialogo è già mostrata.

Se non riceveremo una risposta immediata { "type": "StartCopying" } dal server, ma facciamo affidamento sul messaggio "Avviato" che il server trasmette a tutte le finestre aperte con la nostra applicazione Web, il flusso di lavoro è il seguente:

  1. Mostra il widget "Invio dei dati ..." e disabilita l'interfaccia utente nella pagina. (Memorizza anche in una variabile JavaScript che il motivo per mostrare il widget "Invio dei dati ..." era che richiedevamo la copia dei file.)

  2. Invia la richiesta di copia al server.

  3. Attendi l'errore o il messaggio "Avviato" dal server.

  4. Su entrambi i messaggi (se la variabile sopra menzionata indica che il motivo per mostrare il widget "Invio dei dati ..." era che richiedevamo la copia dei file) ignorare il widget "Invio dei dati ...", e se è un messaggio "Iniziato", mostra la finestra di dialogo "Copia file ..."

Quindi entrambi i flussi di lavoro funzionano bene, ma il secondo è più semplice. Vado a scegliere il secondo.

    
risposta data 15.07.2016 - 18:26
fonte

Leggi altre domande sui tag