Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-07-2013
Avatar de JULIPO
JULIPO JULIPO is offline
Miembro
 
Registrado: Jan 2006
Ubicación: Bogota Colombia
Posts: 187
Poder: 13
JULIPO Va por buen camino
Hacer un whatsapp en delphi

Reciban un cordial saludo.

estoy desarrollando un aplicativo que recibe informacion via tcp/ip desde equipos industriales, (plantas electricas, ruteadoras, Etc), para esto desarrolle un servicio para windows un datasnap server que trabaja con bases de datos Mysql y recibe la informacion de estos equipos por indy y la procesa, tambien desarrollamos un aplicativo tambien en windows datasnap client que transmite a las personas interesadas eventos como sobrecargas, bloqueos , Etc. El problema que tenemos es que debemos migrar este datasnap client a dispositivos moviles con sistema operativo android y dispositivos con sistema IOS la idea es instalar un servicio en estos dispositivos moviles que informe estos eventos a las personas autorizadas algo como un whatsapp que informe a la persona interesada del evento que presenta la maquina en cuestion.

como se hace?

no tengo claridad como funciona un programa como whatsapp, la idea tambien es que funcione asi el dispositivo este fuera de la red corporativa, es decir que transmita la informacion por la internet.

de antemano gracias por su ayuda.
__________________
No basta con saber es necesario aplicar lo que se sabe, no basta con querer hacer las cosas es necesario hacerlas
Goethe
Responder Con Cita
  #2  
Antiguo 14-07-2013
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: Sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 16
AzidRain Va por buen camino
Tienes tres alternativas:

1.- Contratar un servicio SMS y programar el envío de las alertas vía mensajería celular
2.- Enviar un email (la mas sencilla y fácil de implementar) a los involucrados, si siempre tienen su teléfono conectado les llegará el aviso de inmediato.
3.-Crear una aplicación para android o iOS que se encargue de checar y alertar lo que quieres.

En lo personal empezaría por la opción 2, ya que no requiere saber ni donde ni como accesan al email los involucrados, y les llega igual que un SMS. Luego escalaría a la opción 1 y finalmente ya funcionando todo por la opción 3.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #3  
Antiguo 15-07-2013
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: May 2003
Ubicación: Bogotá, Colombia
Posts: 757
Poder: 16
gatosoft Va camino a la fama
https://pushover.net/

De acuerdo con todo lo que dice AzidRain. Yo personalmente contemplaría también las notificaciones mediante el servicio PushOver , el cual sirve para iOS y Android.

Hasta donde tengo entendido es gratuito... pero no estoy seguro pues no lo he utiizado aún. trabaja con servicios REST, y el único problema que yo veo, es que si tienes apagado el equipo o fuera de red, la notificación no te llega después, es decir, una vez el servicio recibe la notificación la retransmite de inmediato y no almacena nada.

Dependiendo de como lo veas, otro posible inconveniente, es que los usuarios deben comprar la aplciación en la app store o google store (Un dólar tal vez). No sería inconveniente si lo ves como una inversión: Un servicio ya implementado que te ahorra temas de desarrollo y mantenimeinto.

Otra inversión reomendada para trabajar el tema del PushOver es el TMS Cloud Pack, de la mepresa TMS software. Éste paquete trae ya implementada varios componentes VCL para trabajar aplicaciones de la nube y redes sociales (Twitter, Facebook, pushOver, SkyDrive, etc).

En la escala propuesta por AzidRain, yo lo pondría en el segúndo lugar, después de la opción del correo. Es más la opción del correo deberías implementarla aunque implementaras las demás.

1.- Enviar un email (la mas sencilla y fácil de implementar) a los involucrados, si siempre tienen su teléfono conectado les llegará el aviso de inmediato.
2-Implementar notificaciones via PushOver
3.- Contratar un servicio SMS y programar el envío de las alertas vía mensajería celular
4.-Crear una aplicación para android o iOS que se encargue de checar y alertar lo que quieres.
__________________
gatosoft [M.40.co]
Responder Con Cita
  #4  
Antiguo 19-07-2013
santus santus is offline
Miembro
 
Registrado: Jan 2006
Posts: 130
Poder: 13
santus Va por buen camino
Si trabajas con datasnap, quizá te sirva la herramienta HTML5 Builder para no tener que cambiar de fabricante. La misma trae wizards para conectarse a un servidor datasnap lo cuál te ahorras de investigar como conectar con tus servidores.

Para hacer algo como un watsapp, deberías implementar un callback, que es muy fácil de hacer en delphi y creo haber visto algún ejemplo en html5 builder. Con phonegap puedes transformar una aplicación hml5 en "nativa", aunque eso no lo he probado.

Yo creo que para algo sencillo como esto te va a funcionar perfecto. Creo que es una solución más viable antes de ponerte a estudiar Java y Objetive-C.

Saludos.
__________________
"El ordenador nació para resolver problemas que antes no existían." Bill Gates.
Responder Con Cita
  #5  
Antiguo 05-08-2013
Avatar de JULIPO
JULIPO JULIPO is offline
Miembro
 
Registrado: Jan 2006
Ubicación: Bogota Colombia
Posts: 187
Poder: 13
JULIPO Va por buen camino
Aun nada

He revisado el tema del push over y funciona muy bien el problema es que es de pago, la idea es que necesitamos conectar muchos clientes y eso nos sale muy costoso, en cuanto al mail ya lo implementamos y el problema que tenemos es que no funciona en tiempo real, se puede presentar el caso de que el cliente reciba correos cada 5, 10 o mas minutos por lo que el mensaje llegara muy tarde, la idea es prevenir fallas en el sistema pero con un tiempo de respuesta superior a los 5 minutos nuestro aplicativo es simplemente una buena idea (le resulta mejor a la empresa realizar la llamada telefonica para avisarnos que los sistemas fallan), en cuanto a los sms dependemos de un servicio prestado por otra compañia en el caso de Colombia las empresas celulares son un verdadero desastre los mensajes pueden llegar incluso con retrasos de 1 dia, ademas son pagos tenemos el mismo problema del push over.

Podemos Crear un DataSnap Server pero quisiera saber algunas cosas.

Puedo enviar comandos a un cliente (me preocupa que muchos clientes esten preguntando al tiempo si tienen algun evento , mejor que el servidor cuando tenga algo le envie un comando al cliente para que actue).

si es asi alguien tiene un ejemplo que nos sirva de guia.


de antemano muchas gracias.
__________________
No basta con saber es necesario aplicar lo que se sabe, no basta con querer hacer las cosas es necesario hacerlas
Goethe
Responder Con Cita
  #6  
Antiguo 05-08-2013
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: May 2003
Ubicación: Bogotá, Colombia
Posts: 757
Poder: 16
gatosoft Va camino a la fama
Amigo, pues tu inquietud se resuelve utilizando CallBacks en DataSanap

Te recomeindo el artículo de Pawel Glowacki sobre el tema, y en general toda su serie "Delphi Labs".

Un saludo,
__________________
gatosoft [M.40.co]
Responder Con Cita
  #7  
Antiguo 05-08-2013
Avatar de JULIPO
JULIPO JULIPO is offline
Miembro
 
Registrado: Jan 2006
Ubicación: Bogota Colombia
Posts: 187
Poder: 13
JULIPO Va por buen camino
Excelente solucion

Revise el tema y es exactamente lo que necesito, ahora me surgen unas dudas en el servidor de datasnap como identifico que clientes son los que estan conectados al servidor y como envio mensajes desde el servidor propiamente no desde 2 clientes sino desde el servidor al cliente, ademas me interesa saber si ya tengo un cliente conectado de una compañia que solo nos activo (nos pago un solo cliente), como puedo hacer que no se conecten mas clientes es decir que me rechace la conexion para estos casos del segundo cliente.

estoy algo emocionado con la solucion y a lo mejor sean cosas muy faciles pero no las entiendo mucho

De antemano muchas gracias por la ayuda
__________________
No basta con saber es necesario aplicar lo que se sabe, no basta con querer hacer las cosas es necesario hacerlas
Goethe

Última edición por JULIPO fecha: 05-08-2013 a las 22:51:57.
Responder Con Cita
  #8  
Antiguo 05-08-2013
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: May 2003
Ubicación: Bogotá, Colombia
Posts: 757
Poder: 16
gatosoft Va camino a la fama
En el articulo estan todas las respuestas, y para que lo veas mejor remitete a los videos (no puedo referenciarlos por limitaciones con youtube), buscalos en la red como "Delphi Labs"

Para saber los clientes que están conectados, puedes utilizar el TDSClientCallbackChannelManager.RegisterCallback, en el que cada cliente reporta al servidor un ID que lo identifica.


Con respecto a generar el mensaje desde el servidor, No estoy seguro, si puedes "embeber" un cliente en el servidor que implemente el TDSClientCallbackChannelManager. No estoy seguro si permita el Register (puedes probar y nos cuentas).

Pero podrías hacer lo siguiente:

Que tu servidor DataSanap sea solo una capa de comunicación (recibe mensajes y envía a los clientes), y puedes implementar un servicio separado que monitoree los eventos de las máquinas y cuando se dispare un evento, envíe el mensaje al servidor (de comunicación), y éste lo replcia a los clientes conectados...

solo una idea,
__________________
gatosoft [M.40.co]
Responder Con Cita
  #9  
Antiguo 13-08-2013
Avatar de JULIPO
JULIPO JULIPO is offline
Miembro
 
Registrado: Jan 2006
Ubicación: Bogota Colombia
Posts: 187
Poder: 13
JULIPO Va por buen camino
De antemano gracias por tu ayuda
Cita:
Para saber los clientes que están conectados, puedes utilizar el TDSClientCallbackChannelManager.RegisterCallback, en el que cada cliente reporta al servidor un ID que lo identifica.
, estamos hablando del lado del servidor?, en el server container tengo 2 componentes el server y el DSTCPServerTransport, como puedo usar TDSClientCallbackChannelManager.RegisterCallback aqui ?

Perdona si estoy diciendo incoherencias pero la verdad no entiendo.
__________________
No basta con saber es necesario aplicar lo que se sabe, no basta con querer hacer las cosas es necesario hacerlas
Goethe
Responder Con Cita
  #10  
Antiguo 13-08-2013
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: May 2003
Ubicación: Bogotá, Colombia
Posts: 757
Poder: 16
gatosoft Va camino a la fama
En el articulo de Delphi Labs, muestra cómo se utiliza el componente TDSClientCallbackChannelManager.

Éste componente se crea en el cliente y utiliza el método register para reportar al servidor un ID...

El TDSClientCallbackChannelManager se conecta al servidor, por lo cual no se si pueda declarase dentro del mismo servidor.

Como solución te proponia:

1) implementar un DataSnapServer encargado de las comunicaciones entre aplicaciones
2) Tienes una applicación o servicio que monitorea unas máquinas (Ésta aplicación es un cliente del DataSnapServer y le envia las alertas que debe replicar, desde aqui se genera el callback)
3) Tienes unos Clientes (ipads, Pcs) a los cuales debes enviar notificaciones.

Si revisas los videos se verá mejor, pues se explica paso a paso...

Un saludo,
__________________
gatosoft [M.40.co]
Responder Con Cita
  #11  
Antiguo 14-08-2013
Avatar de JULIPO
JULIPO JULIPO is offline
Miembro
 
Registrado: Jan 2006
Ubicación: Bogota Colombia
Posts: 187
Poder: 13
JULIPO Va por buen camino
si el problema es a la desconexion

Gracias por tu respuesta si es claro que el cliente puede tener un numero de ID pero como saber cuando un cliente se desconecta en el servidor tendría que preguntarle a todos quien se desconecto y el que no responda ese es pero cuando se tienen muchos cliente el proceso se hace engorroso.

desde el servidor tengo el evento ondisconnect en el componente DSTCPServerTransport1 pero no puedo ubicar quien fue el que se desconecto.

aclaro un poco la idea realizo un proceso de conexión y autenticacion en el servidor de datasnap, comparo los datos de usuario y password con una tabla en Mysql cuando logro la conexión grabo en la tabla desde el cliente el numero de id para que el cliente que se encarga de enviar la información tanto global como a cada uno de los clientes tenga identificado el numero de la conexión, hasta aquí bien, pero cuando me desconecto o pierdo la conexión no puedo identificar que cliente se desconecta,(ademas debo tener la posibilidad de desconectar a algún cliente desde el servidor ).

Espero se vea claro el problema para que me ayuden con la solución.
__________________
No basta con saber es necesario aplicar lo que se sabe, no basta con querer hacer las cosas es necesario hacerlas
Goethe
Responder Con Cita
  #12  
Antiguo 14-08-2013
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: May 2003
Ubicación: Bogotá, Colombia
Posts: 757
Poder: 16
gatosoft Va camino a la fama
Cita:
Empezado por JULIPO Ver Mensaje
Gracias por tu respuesta si es claro que el cliente puede tener un numero de ID pero como saber cuando un cliente se desconecta en el servidor tendría que preguntarle a todos quien se desconecto y el que no responda ese es pero cuando se tienen muchos cliente el proceso se hace engorroso.

desde el servidor tengo el evento ondisconnect en el componente DSTCPServerTransport1 pero no puedo ubicar quien fue el que se desconecto.

aclaro un poco la idea realizo un proceso de conexión y autenticacion en el servidor de datasnap, comparo los datos de usuario y password con una tabla en Mysql cuando logro la conexión grabo en la tabla desde el cliente el numero de id para que el cliente que se encarga de enviar la información tanto global como a cada uno de los clientes tenga identificado el numero de la conexión, hasta aquí bien, pero cuando me desconecto o pierdo la conexión no puedo identificar que cliente se desconecta,(ademas debo tener la posibilidad de desconectar a algún cliente desde el servidor ).

Espero se vea claro el problema para que me ayuden con la solución.
No tienes que saber cuando se desconecta..!!!, precisamente para eso es el CallBack y los Channels que definas...

En tema de Callbakcs el servidor lo hace todo, si revisas elvideo, la programación en el servidor fue nula, (un par de configuraciones)...

Ahora tenemos:
1) tus clientes se registran.
2) Otro cliente (El monitor de equipos) envía un mensaje de alerta...
3) el servidor recoge el mensaje y hace Broadcast o difusion a todos los clientes conectados... (tu no tienes que llevar el control de los clientes, ni programar nada en el servidor para que esto suceda)
4) si un cliente se desconecta, no pasa nada ... supongo que internamente le informara al servidor que se va y listo...

Ahora si por algún motivo necesitas "saber quien está conectado", para actualizar tus estados en la BD, pues puedes utilizar el mismo sistema de Callbacks para enviar un mensaje ping... es más, cada vez que envíes una alerta a tus clientes puedes solicitar una confirmación de leido mediante una respuesta al callback...

un saludo,
__________________
gatosoft [M.40.co]
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Enviar mensajes Whatsapp por c++ builder o delphi vivamotos C++ Builder 8 10-10-2011 22:03:20
Hacer animación en delphi jask2007 OOP 1 03-04-2011 08:19:44
hacer programa vpn en delphi kokele Redes 5 27-12-2010 14:30:53
Hacer que Delphi 2010 luzca como Delphi 7 jorosmtz La Taberna 0 11-04-2010 23:45:36
Hacer juegos con delphi astut Varios 4 18-09-2006 12:37:57


La franja horaria es GMT +2. Ahora son las 16:58:39.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi