elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  MANTENER SESION ABIERTA EN PHP.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: MANTENER SESION ABIERTA EN PHP.  (Leído 6,641 veces)
podenko

Desconectado Desconectado

Mensajes: 4


Ver Perfil
MANTENER SESION ABIERTA EN PHP.
« en: 14 Febrero 2014, 19:17 pm »

Hola a todos, mi nombre es Pedro, soy nuevo en el foro. Estoy involucrado en un proyecto y tengo un problema que me viene de cabeza.

Tengo un PC (PC1) conectado a una red de sensores. Este PC recibe de la red de sensores mensajes cada cierto tiempo. El programa que recibe la información de esos sensores esta escrito en C.

Por otra parte tengo un servidor Apache montado sobre otro PC(PC2), al cual se conectarán los clientes para visualizar los datos.

Una vez el PC1 reciba datos de los sensores, debe de enviarlos mediante XML al servidor Apache en el PC2 mediante una conexion HTTPS. Esto se puede realizar mediante POST.

Hasta aquí os preguntareis, y cual es el problema?. Pues el problema es que quiero mantener la sesion abierta, es decir, una vez el PC2 autentifica al PC1, todos los mensajes XML que mande el PC1 al PC2 debe de enviárselo por el mismo canal, ya que si no habría que volverse a autenticar. Por explicarlo de otra manera, una vez el PC1 manda la contraseña al PC2, si esta es correcta, el PC2 debería de crear una conexión HTTPS en un puerto específico del PC1 y mantenerla, así sabríamos que ese camino es seguro para los datos.

La forma más segura de hacerlo me imagino que es mediante sockets, más concretamente sockets ssl,tls. Ha alguien que haya trabajado alguna vez con ellos y me sepa explicar algún ejemplo de como realizar esto?

Otra opción también podría ser usar cURL, y mandar una cookie que identifique al cliente(PC1) cada vez que se le envíen datos al servidor(PC2). Aunque esto, como os podéis imaginar no es tan eficiente ya que estaríamos abriendo una conexión cada vez que queramos enviar datos.

Si alguien puede darme información sobre el tema y tiene experiencia le estaría muy agradecido.


un saludo a todos ;-) ;-) ;-)


En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: MANTENER SESION ABIERTA EN PHP.
« Respuesta #1 en: 14 Febrero 2014, 20:03 pm »

El protocolo HTTP/s es stateless, ósea que cada request es tomada como nueva.

Otra solución seria utilizar WebSockets que es la solución que buscas.

Saludos.


En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
podenko

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: MANTENER SESION ABIERTA EN PHP.
« Respuesta #2 en: 17 Febrero 2014, 16:15 pm »

Gracias por tu respuesta.
La verdad es que ahora estoy probando a realizar el trabajo con la ayuda de una amada herramienta llamada cURL. Por lo que he leído, te permite guardar las sesiones en memoria, a sí que me imagino que si realizará dos POST seguidos al mismo sitio web, conseguiría que se reutilizase el  canal.

Alguno tiene experiencia utilizando esta herramienta, me podría ser de gran ayuda.

Gracias de antemano.
En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: MANTENER SESION ABIERTA EN PHP.
« Respuesta #3 en: 17 Febrero 2014, 16:53 pm »

Recuerda que Curl es una herramienta no un protocolo y por lo tanto esta limitado a las funcionalidades que ofrece el protocolo.

a sí que me imagino que si realizará dos POST seguidos al mismo sitio web, conseguiría que se reutilizase el  canal.

Incorrecto, el pudiera guardar la cookie de session u cualquier otra y reutilizarla en las próxima request, así evitaria dar pasos previos que ya ha dado como por ejemplo loguearse. Pero con cada request, se abre un canal nuevo (porque así esta diseñado el protocolo). Deberías leerte las especificaciones del protocolo HTTP, seria de gran ayuda.

Saludos.
En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
podenko

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: MANTENER SESION ABIERTA EN PHP.
« Respuesta #4 en: 17 Febrero 2014, 17:00 pm »

Ok me queda claro.
Aunque en la especificación de cURL pone que ciertos datos son guardados en una cache para mantener las conexiones persistentes, quizás no lo haya entendido bien.

A la hora de utilizar websockets. He conseguido una librería para poder implementarlo directamente desde un programa en C. Me gustaría saber más de esto, por que ahora lo desconozco aunque me dispongo a leer la documentación.

Ya que veo que controlas sobre el tema, ¿sería difícil abrir un canal de comunicación seguro desde un programa en C hasta uno en PHP situado en otra máquina?

Gracias por tu respuesta un saludo.
En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: MANTENER SESION ABIERTA EN PHP.
« Respuesta #5 en: 17 Febrero 2014, 19:24 pm »

La dificultad depende de los conocimientos y experiencia.

Te recomiendo que en esta etapa no te dificultes tanto las cosas y mucho menos con tecnologias con la cual quizas no hayas trabajado como pudiera ser WebSockets. Haz todo como lo sabes hacer aunque no sea tan eficiente y luego vas mejorando el performance ya sea implementando WebSockets u otra tecnologia.

Saludos.
En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
podenko

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: MANTENER SESION ABIERTA EN PHP.
« Respuesta #6 en: 18 Febrero 2014, 12:28 pm »

Hola Yoya.
Finalmente me he aventurado a utilizar websockets, principalmente por que es la tecnología que se utiliza para este tipo de sistemas en estos días. Como ingeniero recién salido de mi facultad, no cuento con mucha experiencia pero creo que es el momento para adquirirla.

Volviendo a mi proyecto, ahora lo explicaré mejor. Tengo una Raspberry Pi (corre en Linux), conectada a un modulo de radiofrecuencia. El programa con el que me llegan los datos del módulo de radiofrecuencia esta escrito en C básico.

Mi idea era la siguiente:

1. La Raspberry Pi debe de conectarse mediante un websocket a un servidor situado en otra máquina.

2.- Los clientes, se conectaran al Servidor y este mostrara los mensajes recibidos desde la Raspberry Pi.

Por lo tanto quiero implementar un Servidor websocket en un PC(windows) y un cliente websocket en mi Raspberry(linux).

Por lo que he mirado en la web, se puede hacer de muchas maneras, yo e pensado en dos:
1.-Hacer el cliente websocket desde C, pero veo que es muy complicado manejar las librerias de websockets desde C.
2.-Otra posibilidad séria mandar los mensajes desde C hasta otro programa mediante un socket interno y luego manejar el cliente websocket desde un lenguaje más asequible.

¿Cual pensáis que es la opción más asequible?.
Si os interesa el proyecto os lo podría explicar mejor porque ya hice unas cuantas cosas antes. El fin del mismo es diseñar un protocolo para el control de acceso a instalaciones.

Gracias ;-) ;-)
En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: MANTENER SESION ABIERTA EN PHP.
« Respuesta #7 en: 18 Febrero 2014, 14:13 pm »

2.-Otra posibilidad séria mandar los mensajes desde C hasta otro programa mediante un socket interno y luego manejar el cliente websocket desde un lenguaje más asequible.

Y porque no simplemente busca una forma de implementar directamente el cliente WebSocket con un lenguaje mas asequible, como por ejemplo Python??

Saludos y buena suelte en el proyecto, estoy seguro que ya pronto lo terminaras.
En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Solucionado] Ejecutar comando y mantener consola abierta
GNU/Linux
aaronduran2 3 7,126 Último mensaje 24 Junio 2010, 15:39 pm
por aaronduran2
Cómo mantener conexion abierta a MySQL?
.NET (C#, VB.NET, ASP)
luison 4 6,653 Último mensaje 15 Febrero 2011, 21:06 pm
por [D4N93R]
Correr un script sin mantener la terminal con ssh abierta?
GNU/Linux
‭lipman 4 3,266 Último mensaje 14 Febrero 2016, 19:24 pm
por engel lex
¿Cómo mantener una sesión en PHP?
PHP
Kaxperday 2 4,474 Último mensaje 25 Marzo 2016, 04:02 am
por gAb1
¿Como mantener en memoria datos de sesion en aplicacion de escritorio con java?
Java
miltonprogramador 2 3,731 Último mensaje 16 Diciembre 2016, 01:49 am
por miltonprogramador
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines