Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    20

    Sistema di notifiche push su browser

    Mi serve un sistema di notifiche push il quale segnali all'utente con una piccola notifichina su un'icona quando gli è arrivato un nuovo messaggio da un utente, oppure un messaggio di sistema. Se avete pensato a Facebook ed al suo sistema di push di messaggi avete fatto bene, mi serve la stessa identica cosa.

    Partiamo dalle soluzioni escluse:
    -ho escluso il polling perchè i messaggi sarebbero molto rari, anche se dovessi arrivare a tanti utenti e fare una query ogni, diciamo, 2 minuti quando magari un utente riceve un messaggio a settimana mi sembra un'inutile spreco di risorse.
    -ho, per ora, escluso il long-polling perchè, se il sito dovesse avere una grandissima quantità di utenti, tenere aperte tante socket mi sembra troppo dispendioso.

    Cosa ho:
    -mongo DB per il salvataggio dei messaggi;
    -nodeJS e delle funzioni che posso chiamare e si interfacciano a Mongo;
    -Apache per far girare il mio framework (proprietario).

    La soluzione ottimale sarebbe far sì che siano i browser, magari su porta 80 o anche altra ed insieme all'IP (ovviamente ho l'IP dell'utente) a fare da server. Dunque ad ogni evento (messaggio inviato da un utente ad un altro) dovrei incaricare uno dei miei strumenti (il framework avvisato da NodeJs o direttamente NodeJS) e fare in modo che contattino il suddetto server/browser in ascolto, per dirgli "guarda che all'utente è arrivato un nuovo messaggio, aumenta il valore delle notifiche di 1".

    Come mi aspetto che vadano le cose:
    -utente A manda un messaggio a B;
    -salvo il messaggio su Mongo;
    -controllo se l'utente B è connesso;
    -se non è connesso metto in una coda e gli recapito i messaggi alla prima connessione (e questo non mi crea problemi);
    -se invece è connesso devo contattarlo all'indirizzo IP più porta 80 (o qualcosa del genere) e fargli incrementare le notifiche.

    Ovviamente l'unico che mi permettere di fare questo lavoro lato browser è il JS. Ma la domanda è:
    c'è un qualcosa Open che mi permette di trasformare un browser in un server in ascolto?

    Se no, voi quale soluzione adottereste?

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    E chi li convince gli utenti ad installarsi un server web sul proprio pc? Li assicuri tu che aprire la porta 80 non comporta rischi di sicurezza? E come fai con tutti quelli che cambiano IP ad ogni connessione?

    Rivaluta le normali chiamate ajax, quando poi arrivi a migliaia di utenti ne riparliamo
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    20
    Prima di tutto credo che sia giusto che vi dica che il progetto per il quale sto collaborando è un social network e questo spero che faccia maggiore chiarezza sul perchè mi serve un sistema di notifiche/messaggi simile a quello di Facebook ed abbastanza snello in previsione (lo speriamo) di arrivare ad un numero grande di utenti.
    Detto questo vi chiedo di non fare confusione, non ho mai parlato di server web ma soltanto di una socket in JS. Teoricamente ho anche trovato un progetto molto interessante che fa esattamente questo lavoro e vi linko le pagine del progetto, giusto perchè a qualcuno potrebbe interessare:

    http://www.bram.us/2012/08/14/browse...-your-browser/

    Aggiungo anche il video della dimostrazione:

    https://www.youtube.com/watch?v=iU601Db3wjs

    Comunque proprio per l'IP non avrei problemi, lo ottengo al momento della connessione (non mi serve prima). Non ho mai voluto che loro facessero da server puri, mi serviva soltanto che creassero una socket al momento della connessione per creare un canale col quale soltanto io potessi mandare informazioni all'arrivo di un evento.

    Però anzichè andare ad imbarcarmi in un progetto che è molto acerbo (parlo di Browserver) col quale mi potrei ritrovare totalmente scoperto se l'autore dovesse stufarsi di aggiornare preferisco puntare su altro.
    Attualmente sono abbastanza orientato ad usare le websocket e quindi fare in modo che sia nodeJS a prendersi carico del lavoro e creare una socket per ogni utente connesso.
    Dunque la mia idea è questa:
    Server socket: nodeJS.
    Client socket: websocket sul browser, ovviamente in JS.

    Spostare tutto sul JS a mio giudizio crea un po' di problematiche a livello di login. Attualmente io faccio ridondanza dei dati del mio DB SQL su MONGO e ho delle funzioni su nodeJS che mi aggiornano Mongo quando un utente nuovo si iscrive. Dunque su Mongo ho username e password, ma è ovvio che non sono di certo dati che voglio far passare sul javascript, soprattutto la password.

    Chiedo consiglio su come uscire da questo specie di vicolo cieco senza dover utilizzare mezzi non convenzionali.

Tag per questa discussione

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.