2009-09-18 18 views
19

E 'possibile inviare notifiche di growl al computer di un utente, da un'applicazione web, usando javascript? Questo sarà solo su un'applicazione Intranet, quindi la sicurezza non è una preoccupazione importante. Inoltre, sarà limitato ai soli utenti Mac con Safari o Firefox.Come inviare messaggi growl reali con javascript?

Grazie.

+19

avviso ('grrrrr') –

risposta

7

Growl ha un network interface e HTML 5 ha Web Sockets, quindi in teoria potrebbe essere possibile interamente in JavaScript (quando vengono implementati Web Sockets). Più realisticamente, se il tuo server web è connesso alla stessa rete dei tuoi clienti (cioè può vedere e connettersi ai loro singoli indirizzi IP), puoi eseguire una callback in stile AJAX a uno script sul server che effettuerà la richiesta di rete.

+1

Il tuo collegamento 'interfaccia di rete' è rotto. Inoltre, il protocollo growl è cambiato. C'è un nuovo protocollo multipiattaforma chiamato GNTP. – Andrew

1

Il post http://ajaxian.com/archives/growls-for-windows-and-a-web-notification-api contiene un collegamento a un growl.js che è stato scritto per funzionare con Growl per Windows. Non ho esaminato abbastanza per sapere se un approccio simile potrebbe funzionare con Growl.

+0

Questa soluzione implica avere un server locale. (Che è fattibile in quel caso, dal momento che l'autore è anche uno sviluppatore di growl-for-windows.) –

3

Fluid, un generatore del browser site-specific per Mac, espone una notifica Growl API JavaScript [1]:

window.fluid.showGrowlNotification({ 
    title: "title", 
    description: "description", 
    priority: 1, 
    sticky: false, 
    identifier: "foo", 
    onclick: callbackFunc, 
    icon: imgEl // or URL string 
}) 

fonte pertinente è on the Fluid Developer page.

È possibile cercare esempi reali al numero userscripts.org.

Uno svantaggio di questo approccio è, naturalmente, è necessario forzare gli utenti a utilizzare un browser Fluid quando si accede all'applicazione Intranet.

L'impostazione di un bridge come Adam suggerisce ha il vantaggio di richiedere uno sforzo minimo da parte degli utenti.

+0

Fluid è davvero carino. Anche se hai ragione. Richiede un'azione da parte dell'utente, quindi non è l'ideale, ma è utile avere delle opzioni. – Andrew

2

Ho provato a trovare una soluzione per inviare messaggio growl con javascript, senza fortuna, purtroppo. Riassumerò la mia ricerca per riferimento futuro.

Possibili soluzioni studiate:

  • Flash - causato dal flash avere accesso a connessioni socket regolari è sembrata una buona idea venire con un frammento di flash che esporrebbe alcune API per JavaScript tramite ExternalInterface . L'oggetto Flash verrebbe servito dal server del sito Web (posizione remota) e tenterà di comunicare all'interfaccia di growl locale, che potrebbe attivare il controllo del file di criteri tra domini. Ciò implica una comunicazione che non è compresa (supportata) dal servizio growl per ora, quindi la connessione fallirebbe. Come informazioni extra: growl per Windows ha avuto il supporto per i client basati su flash ma a giudicare da questo recent discussion la sua versione attuale in errore).

  • WebSockets - simile idea di flash-based, WebSockets richiedono iniziale scambio paio di richieste HTTP/risposte prima che la connessione viene aggiornato al normale connessione socket a due vie. Come nell'approccio di Flash, ciò funzionerebbe, ma richiederebbe un ringhio per supportare quella comunicazione basata su http prima della connessione socket. Growl non lo supporta per ora, alcuni dicono che potrebbe, una volta che le specifiche per growl sono definitive.

  • Google Gears - non hanno provato, ma google gears has been discontinued partire dal marzo 2011, probabilmente sollevando problemi con il supporto di Firefox in versione> = 4.

+0

Grazie comunque per lo sforzo. =] La mia più grande domanda è ancora come chiedere al client growl dell'utente di accettare le notifiche. Presumo che tu non possa usare javascript da solo, ma forse javascript potrebbe parlare con un server, che poi parla al client usando GNTP. I * think * se si conosce l'indirizzo IP del client, è possibile chiedere al client di accettare le notifiche dal server, ma non so dove cercare un esempio. La documentazione di Growl potrebbe avere qualcosa ma non so dove cercare. – Andrew

+0

Bene, se ricordo male, la password può essere inviata per autenticarsi con growl senza il prompt del growl. Quindi, se sei disposto e in grado di utilizzare un server separato che ha accesso a tutti i computer della tua rete locale (e sapere come associare l'utente dell'applicazione Web con un indirizzo IP specifico - che dovrebbe essere facile da fare), puoi ottenere la password dall'utente nella tua applicazione web usando qualsiasi metodo tu voglia (potrebbe essere semplicemente vecchio formato) che verrebbe trasferito al tuo server web, che a sua volta lo userebbe per autenticare con growl e inviare qualsiasi notifica tu voglia direttamente alla macchina client. – WTK

+0

Altri due pensieri su questo argomento. Sono sicuro al 90% che la soluzione con server web separato funzionerebbe. Sul lato server, è possibile utilizzare una delle librerie disponibili che implementano il protocollo GNTP. Ecco un elenco http://www.growlforwindows.com/gfw/developers.aspx#integration – WTK

0

Per client-solo metodi, I' ve provato quanto segue:

Se si utilizza Growl per Windows o Growl versione 1.3+, è possibile utilizzare il binario Flash come illustrato nella this demo page

C'è anche un'estensione di cromo fatta da GfW che usa il binario come NPAPI in modo nativo. GrowlChrome
Questi sono basati sul protocollo GNTP che è stato sviluppato dalla GfW, e l'originale Growl (per Mac) proiettata adottato dalla versione 1.3

Per la versione 1.2.x, ho trovato un altro cromo-estensione che funziona: Notifier Twitter e Notificatore Growl per Google Play. Queste estensioni sono basate su JSGrowl

Link

0

Si potrebbe anche provare Gritter, "una notifica di ringhio simile per jQuery."

0

Un altro poster lo menzionava, ma è sicuramente possibile utilizzare Javascript (con un piccolo aiuto di Flash, ma non è necessario fare confusione con quella parte) per inviare notifiche a Growl in esecuzione localmente. Ecco una pagina di prova per provarla senza impostare nulla: http://www.growlforwindows.com/gfw/examples/js/

Nota tuttavia, questo funziona attualmente solo su Windows. Come notato da un precedente manifesto, il supporto della versione Mac per le connessioni basate su Flash è attualmente interrotto.

Su Windows, è anche possibile utilizzare WebSockets, e qui è una pagina di prova simile: http://www.growlforwindows.com/gfw/examples/websocket/

Nota che anche questo non è attualmente implementato in Growl su Mac, quindi se si prendono di mira gli utenti Mac (che sembra che tu sia), questi probabilmente non aiutano. Volevo solo sottolineare che sia Javascript che WebSocket sono possibili una volta che il supporto è stato completamente aggiunto al client OSX.

0

Se i tuoi utenti hanno flash, puoi prendere in prestito il ponte javascript-flash-growl da here. Puoi sempre controllare gli script all'interno del flash con qualcosa come JPEXS.

L'ho utilizzato con successo e jQuery per configurare alcune notifiche personalizzate per me using mediawiki e utilizzando il tasto di scelta rapida/greasemonkey. Gli unici problemi arrivano se il flash è bloccato/non consentito/non installato, o quando il flash si blocca.

Problemi correlati