chat room. Così come lo chat tutorial ha caricato la "tabella" della chat, puoi semplicemente avere una tabella "stanze". Quindi puoi afferrare solo la stanza che desideri. Dato che la pistola usa lo partials per essere veloce, finirà per caricare solo i dati a cui sei iscritto. Sì, i clienti possono archiviare solo un sottoinsieme dei dati nel loro complesso, tuttavia ciò naturalmente potrebbe influire sui livelli di replica/persistenza. Se sei preoccupato di questo, eseguire un peer "forte" (come un server) è una soluzione facile e perfetta, poiché eseguirà il backup di tutto. (E sfortunatamente, dato che WebRTC presenta problemi *, è comunque necessario eseguire un peer server relay, quindi potrebbe anche essere usato per lo storage).
Istanze multiple. Non è necessario istanziare più istanze pistola per chiave. In realtà, questo è male. È meglio se non lo fai. È possibile, tuttavia, non abbiamo provato questo quanto dovremmo dal momento che non è l'ideale.
Sicurezza/autorizzazione è un argomento molto molto permaloso, quindi questo dipende in modo selvaggio da come si desidera creare l'app. Se si sta per un vero progetto P2P/decentralizzato, è necessario utilizzare la chiave pubblica/privata cryptography and signatures. In modo tale che altri utenti non possano effettivamente leggere i dati anche se potrebbero contribuire al backup dei dati.Tuttavia, se vuoi mantenere le cose semplici e costruire la tua app come la maggior parte delle app sono costruite ... come servizio centralizzato, allora dovresti scrivere sul tuo server proxy. Questa è la stessa tecnica utilizzata dalla maggior parte delle persone durante la creazione di app e GUN può fare la stessa cosa.
WiFi/Dati limitativi di velocità. Purtroppo non è disponibile direttamente in JavaScript, tuttavia sembra che app ibride come quella citata con PhoneGap possano avere accesso a tali informazioni. GUN è progettato per funzionare in scenari come questo poiché è offline prima. Ma come ti interfaccia con le API esterne che ti danno queste condizioni ... è al di fuori della mia esperienza, ma fattibile.
Dati temporali/limitazione del trasferimento dati. Vedi prima la mia risposta sopra, fattibile ma dipendente da API esterne. In termini di domande limitative, sì, sì. A: Stiamo introducendo presto 'cursori lessicali' che consentiranno ai clienti di limitare le risposte, tuttavia probabilmente implementeremo ciascuna delle sue caratteristiche di vincoli in modo incrementale (non essendo stata una priorità enorme per la community, ma la tua partecipazione lo aumenterà!), prima con le corrispondenze di proprietà esatte (pensa come una dichiarazione di selezione SQL - infatti, è ciò che useremo per creare un'estensione di query SQL per gun!), quindi secondo un intervallo lessicale (seleziona proprietà che iniziano con 'a' attraverso 'c') che può essere fatto con intervalli di timestamp, quindi terzo un vincolo di byte (di come inviare solo al massimo 200 byte alla volta). Tuttavia, una cosa ovvia che puoi fare manualmente (non che tu voglia), puoi semplicemente avere un tavolo di stanze, e poi la stanza è una tabella di blocchi, e i blocchi sono una tabella di messaggi. Potenzialmente con la stanza avendo anche un "ultimo" chunk, quindi si potrebbe facilmente accedere alla tua app di chat facendo gun.get('rooms').path('mychatroom').path('last').map().val(function(message){ console.log(message); });
o qualcosa del genere. Ciò ti consentirebbe di controllare esattamente le condizioni che desideri, ma significa anche che devi fare un po 'più di lavoro.
Riferimenti circolari. Fatto già per te, hai tutti i riferimenti circolari che vuoi: è qui che la pistola eccelle grazie alla sua struttura grafica (riferimenti circolari, tabelle, documenti, chiave/valore, qualsiasi cosa).
Sì, la pistola può monitorare più tasti contemporaneamente.
Utilizzare il proprio server per l'archiviazione ... potrebbe significare un paio di cose diverse. Come far funzionare il tuo server pistola? C'è un semplice wrapper per questo: https://www.npmjs.com/package/gun-server. Se vuoi esempi con Express e roba anche quelli sono semplici. Come utilizzare il file system del server distribuito corrente come spazio di archiviazione perché non si desidera utilizzare S3? È possibile utilizzare il driver di livello https://github.com/PsychoLlama/gun-level. Questa risposta?
* WebRTC richiede server STUN/ICE/di segnalazione per avviare la connessione WebRTC. Il che è super fastidioso. Ciò significa che anche se WebRTC è P2P, per connetterti devi passare attraverso alcuni server e questo deve essere soddisfatto per ogni caricamento della pagina. Per questo motivo, per impostazione predefinita, bundle gun con websockets/JSONP deve connettersi a un peer di server relay della pistola (ci sono anche peer di relay della community che le persone possono usare per esperimenti personali, ma è facile gestirli come in punto 4). Di conseguenza, non abbiamo ancora rilasciato un adattatore WebRTC, nonostante il fatto che la pistola WebRTC + sia perfetta - stupidi server STUN/ICE/di segnalazione.
Queste sono tante domande alla volta, sarebbe meglio suddividerle in domande più piccole. – nawfal