Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [WebSocket] utenti connessi

    Al fine di test ho realizzato una piccola chat in WebSocket e funziona molto bene.
    Sto utilizzando un server di terze parti che offre questo servizio. Non ho un mio server.

    In tutte le documentazioni che ho letto, da nessuna parte riesco a trovare il modo di interrogare il server per sapere quante connessioni sono attive ed il rispettivo ID
    Questo mi sarebbe necessario per sapere chi è connesso e chi si è sconnesso.

    Per il momento, usando ASP, ne tengo traccia con delle variabili ma non è molto affidabile come sistema.


    In parole povere: Come sapere chi c'è e chi se ne è andato via?

    La mia struttura:
    codice:
    var wsUri = "wss://RemoteServer.com/room?apiKey=12345";
    
    websocket = new WebSocket(wsUri);
    websocket.onopen = function(evt) { onOpen(evt) };
    websocket.onclose = function(evt) { onClose(evt) };
    websocket.onmessage = function(evt) { onMessage(evt) };
    websocket.onerror = function(evt) { onError(evt) };
    e seguono tutte le funzioni dichiarate

  2. #2
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,521
    Quote Originariamente inviata da SoloWiFi Visualizza il messaggio
    Al fine di test ho realizzato una piccola chat in WebSocket e funziona molto bene.
    Sto utilizzando un server di terze parti che offre questo servizio. Non ho un mio server.

    In tutte le documentazioni che ho letto, da nessuna parte riesco a trovare il modo di interrogare il server per sapere quante connessioni sono attive ed il rispettivo ID
    Questo mi sarebbe necessario per sapere chi è connesso e chi si è sconnesso.

    Per il momento, usando ASP, ne tengo traccia con delle variabili ma non è molto affidabile come sistema.


    In parole povere: Come sapere chi c'è e chi se ne è andato via?

    La mia struttura:
    codice:
    var wsUri = "wss://RemoteServer.com/room?apiKey=12345";
    
    websocket = new WebSocket(wsUri);
    websocket.onopen = function(evt) { onOpen(evt) };
    websocket.onclose = function(evt) { onClose(evt) };
    websocket.onmessage = function(evt) { onMessage(evt) };
    websocket.onerror = function(evt) { onError(evt) };
    e seguono tutte le funzioni dichiarate
    ciao,
    non hai modo di sapere con certezza quello che avviene in generale nel server (che è il punto di giunzione tra gli utenti) da parte client senza che sia il server stesso a comunicarlo ai client.
    in poche parole devi avere un server tuo o trovare uno che ti fornisca tali informazioni.
    Da notare che websocket non è un socket dove poter fare p2p o una connessione diretta come quella che puoi ottenere con webrtc, ma un protocollo dipendente da un server.
    Se vuoi un “p2p web” devi spostarti su webrtc, in quel caso ogni client potrebbe fare da “server” creando connessioni dirette tra i client.

  3. #3
    Ho già realizzato delle strutture server e client su webrtc.
    Infatti li potevo fare di tutto.

    Ora stavo sperimentando WebSocket.

  4. #4
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,521
    Quote Originariamente inviata da SoloWiFi Visualizza il messaggio
    Ho già realizzato delle strutture server e client su webrtc.
    Infatti li potevo fare di tutto.

    Ora stavo sperimentando WebSocket.
    Strano che non ti forniscano un “evento” di connessione e disconnessione dei client dal server. Magari c’è... hai provato ad informarti presso loro?

  5. #5
    Quelli li ho ma funzionano sul client.
    Ovvero un client può sconnettersi ed io posso fare qualcosa.
    Ma se il client chiude senza disconnettersi, il server ws se ne accorge ma non invia info agli altri connessi.

    Attualmente mi gestisco dei timeout per ovviare.

    Con ws ogni messaggio scritto viene recapitato a tutti i client connessi sul canale.

  6. #6
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,521
    Quote Originariamente inviata da SoloWiFi Visualizza il messaggio
    Quelli li ho ma funzionano sul client.
    Ovvero un client può sconnettersi ed io posso fare qualcosa.
    Ma se il client chiude senza disconnettersi, il server ws se ne accorge ma non invia info agli altri connessi.

    Attualmente mi gestisco dei timeout per ovviare.
    Credo sia l'unico modo che ti rimane. Oppure puoi provare a fare dei "ping" tra i client (magari solo se rimangono tot senza comunicare oppure se non è un problema li fai continui), ma sarebbe meglio che fosse il server a comunicarlo piuttosto che rischiare che tutti i client si "pinghino" l'uno con l'altro generando un sacco di traffico inutile... non mi pare un buon servizio se no.
    Quote Originariamente inviata da SoloWiFi Visualizza il messaggio
    Con ws ogni messaggio scritto viene recapitato a tutti i client connessi sul canale.
    Quello dipende sempre dal server, in realtà si può scegliere se mandarlo in broadcast oppure solo a gruppi o client singoli, ma dipende solo dal server.
    Conosci net se non ricordo male, giusto? non ti conviene scriverti il codice server? così ci fai quello che ti pare. Dovresti trovare anche hosting free che permetto websocket (in genere chi supporta node js supporta anche websocket). Se usi net core puoi usare sia windows sia linux, ma per quest'ultimo a meno che non hai un po di controllo su esso sarà difficile trovare una configurazione adatta già pronta.

    EDIT:
    In ogni caso se usi net potresti passare a signalr (se usi net core è basato su websocket, mentre con la versione classica è basato sul long-polling) che è comunque supportato ovunque su hosting windows
    Ultima modifica di U235; 22-09-2020 a 19:59

  7. #7
    Ho deciso: rimango in ws visto che mi posso accorgere di una disconnessione accidentale entro 30 secondi.

    Accettabile

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.