Mensajería Instantánea Mejorada

10 views
Skip to first unread message

Revista Occams Razor

unread,
Feb 27, 2010, 12:03:16 PM2/27/10
to Revista Occam's-razor
Si recordáis el artículo sobre Netcat del número 1, una de las cosas
que podíamos hacer con este fabuloso programa era montar un sistema de
mensajería instantánea de forma rápida y sencilla.

Pues bien, con un par de sencillos scripts, podemos mejorar bastante
este uso del programa. Lo que hemos hecho es: Por una parte utilizar
Xdialog para crear una ventana en la que escribir los mensajes y por
otra, utilizar el sistema de notificaciones de GNOME para recibirlos
(realmente el notify daemon).

Ahora la forma de invocar nuestro improvisado cliente IM sería algo
tal que asín:

./im.sh | nc localhost 5000 | ./msg.sh

El primer script es el que muestra la ventana para introducir nuestro
mensaje. Este es:

--8<--------------------------------------------
#!/bin/sh

exec 2>&1
USER=`whoami`

while (true) do
echo -n "$USER: "
Xdialog --inputbox "$USER Mensaje" 10 40
done
--8<--------------------------------------------

Más fácil no se puede. Lo único digno de mención es la primera línea.
Esta línea simplemente redirecciona la salida de error estándar hacia
la salida estándar. La razón es que Xdialog nos devolverá lo que
escribamos a través de la salida de error estándar.

El segundo script es todavía más tonto:

--8<--------------------------------------------
#!/bin/sh

while (true) do
read msg
notify-send -t 10000 "$msg"
done
--8<--------------------------------------------

Simplemente leemos lo que nos llegue a través de Netcat y lo mostramos
utilizando la utilidad notify-send. Probablemente tengáis que instalar
el paquete libnotify para poder utilizar este programa. Sí, el -t es
el timeout... cuanto tiempo queremos que el mensaje se muestra. Está
en milisegundos.

Si no utilizáis GNOME, o más concretamente el "demonio de
notificación", otra alternativa bastante interesante es osd_cat
(personalmente me parece bastante más güay :).

Como comentario final, para que nuestro sistema de mensajería
instantánea sea un poco más potente, podéis utilizar nuestra
herramienta NetKitty (http://papermint-designs.com/dmo/prj-
netkitty.html) para la parte servidora. Básicamente ese programa es el
resumen de todo lo que os hemos estado contando en la sección "Mú
rápido" sobre programación en red.

La ventaja que tiene para esta aplicación concreta, es que permite
varias conexiones, mientras que con Netcat solo podéis conectar un
cliente cuando lo ejecutáis en modo servidor. Y bueno, son solo 500
líneas de código incluyendo soporte para Bluetooth :). Hace muchas
menos cosas que Netcat, pero para otras resulta más práctico. Una cosa
que echaréis en falta es que no resuelve nombres, así que tendréis que
utilizar la dirección IP o esos números tan largos del Bluetooth,
cuando lo ejecutéis en modo cliente.

Con NetKitty, el servidor habría que ejecutarlo con un comando como
este:

nk -hub -server T,5000

El flag -hub, le dice a Netkitty que todo lo que reciba, lo
retransmita a todos los clientes conectados. De esta forma tendremos
una especie de IRC mínimo muy sencillo.

No olvidéis que podéis enviarnos cualquiera de vuestros experimentos,
para incluir en "El Rincón de los Lectores" o como un artículo si os
lanzáis a escribir. Y por supuesto cualquier pregunta y sugerencia.

Saludos

Reply all
Reply to author
Forward
0 new messages