# Web & IM (was: Re: \[ruby-it\] Gtalk bot in Ruby?)

**URL:** <https://www.ruby-forum.com/t/web-im-was-re-ruby-it-gtalk-bot-in-ruby/76028>\
**Category:** IT\
**Created:** [November 15, 2006, 12:23pm UTC](https://www.ruby-forum.com/t/web-im-was-re-ruby-it-gtalk-bot-in-ruby/76028 "2006-11-15T12:23:38Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Massimiliano\_M](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/839c29/32.png) [@Massimiliano\_M](https://www.ruby-forum.com/u/Massimiliano_M)\
**Post date:** [November 15, 2006, 12:23pm UTC](https://www.ruby-forum.com/t/web-im-was-re-ruby-it-gtalk-bot-in-ruby/76028/1 "2006-11-15T12:23:38Z")

</div>

On 11/15/06, Paolo Donà [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Non fare il prezioso che sulla roba interessante non si è mai lamentato  
> nessuno di OT…

Va bene, /me gets rid of shame, il contesto è questo: qualche  
settimana fa ho rilasciato una estensione per Firefox  
([http://dev.hyperstruct.net/xmpp4moz](http://dev.hyperstruct.net/xmpp4moz)) che mette la messaggistica  
istantanea (protocollo XMPP, quello di GTalk insomma) alla pari  
dell’HTTP nel browser.

La prima conseguenza è che si possono scrivere facilmente altre  
estensioni basate su XMPP (c’è già il tradizionale chat client, e un  
altro paio), la seconda è che si possono scrivere applicazioni web che  
usano XMPP a fianco di HTTP.

Quella interessante è la seconda: se per avere un’applicazione  
collaborativa (es. una lavagna) prima dovevi scrivere o modificare un  
client e distribuirlo a tutte le parti in gioco, con XMPP integrato  
nel browser ti limiti a scrivere l’applicazione nei soliti HTML,  
Javascript, eventualmente Ruby/PHP/Java/etc., e piazzarla su un server  
web. Le parti in gioco digitano la URL ed è fatta.

Cosa importante da tenere a mente: XMPP trasporta XML, non  
semplicemente testo, quindi non storcere il naso se parlo di scrivere  
“applicazioni”, la chat è solo una delle applicazioni possibili.

> L’implementazione che ti immagini tu avrebbe quindi l’interfaccia XUL invece  
> che GTalk e dietro un bot simile a quello che ho fatto?
> 
> Spiegaci come affronteresti il problema…

Ci provo…

> - non essere interrotti da qualcuno che non sia strettamente  
> definito come mio collaboratore

Se ho capito bene, hai risolto usando un account noto solo ai due  
cialtroni (;-)) su GTalk (applicazione desktop) e l’account generico  
su GMail. Probabilmente con un client tradizionale ti va anche meglio  
perché quasi tutti supportano più account connessi contemporaneamente,  
quindi puoi mettere quello normale su “busy” e quello di lavoro su  
“available”.

> - non dovere fare alcun tipo di login _manuale_ giornaliero (tipo  
> creare la room ogni volta o simile)

Le room in XMPP possono essere nascoste, protette da password, solo  
per utenti registrati, e persistenti (cioè ricordarsi tutte queste  
cose e continuare a esistere anche quando l’ultimo partecipante va a  
nanna). Se lato client aggiungiamo una funzione di bookmark e una di  
autojoin, ci siamo.

> - tenere l’history dei messaggi

Questo si può fare in vari modi, il server può scrivere i log della  
chat room su una pagina web (come gli irc log per intenderci) o si può  
scaricare il barile ad un bot che magari le mandi pure ai partecipanti  
via mail.

> Non mi viene in mente altro…

Qualcosa tipo:

- una lavagna/blocco degli appunti per tener traccia dei punti  
importanti toccati durante un brainstorming, piuttosto che  
rileggersi la conversazione intera (credits to kiaro, questa era sua  
:-));

- navigazione sincronizzata, ovvero in un tab carichi una pagina e  
questa viene caricata anche nei browser delle persone che sono in  
chat con te; tu scrolli la pagina e la pagina scrolla anche da loro;  
tu evidenzi una parola e la parola viene evidenziata anche da  
loro…

- file condivisi: scegli dei file e i contatti che decidi se li  
scaricano quando vogliono…

- editor condivisi: tipo quello per CSS, con cui tu e il tuo web  
designer potete divertirvi a defacciare Google (tipo  
[http://dev.hyperstruct.net/xmpp4moz/wiki/RemoteApplicationCssEditor#Screenshots](http://dev.hyperstruct.net/xmpp4moz/wiki/RemoteApplicationCssEditor#Screenshots)),  
anche se for your eyes only. 🙂

- eccetera…

Capiamoci, sono cose che in buona parte si possono fare prendendo una  
funzionalità da un sito, una da un altro… E’ un po’ come page  
refresh vs. AJAX, alla fine la web mail la leggi anche col page  
refresh, la differenza è che il page refresh è un punto di arrivo  
(oltre non vai) e AJAX è un punto di partenza (ci fai quel che fai col  
page refresh e di  
più).

–  
Massimiliano M.  
code: [http://dev.hyperstruct.net](http://dev.hyperstruct.net)  
blog: [http://blog.hyperstruct.net](http://blog.hyperstruct.net)
