Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Leguim en 15 Agosto 2021, 23:45 pm



Título: [Pregunta]: ¿Cómo aprendieron de websockets?
Publicado por: Leguim en 15 Agosto 2021, 23:45 pm
Hola, tengo  una idea de lo que es un  socket a nivel teórico, pero me está costando mucho buscar información sobre la aplicación práctica del mismo. Más todavía si es con PHP, todo es nosé js socket io pero yo quiero aprender websockets con PHP.

Lo mismo para poder crear un servidor de websockets propio, si ustedes saben de estos temas me podrían decir cómo fue que aprendieron. Quizás nosé buscar correctamente estos temas..

EDIT: No me acordaba que ya había hecho una pregunta como esta: https://foro.elhacker.net/desarrollo_web/pregunta_websockets-t501829.0.html

Nose si deba cerrar este tema Ya que si quieren responder cualquier dato extra me sirve.


Título: Re: [Pregunta]: ¿Cómo aprendieron de websockets?
Publicado por: Danielㅤ en 16 Agosto 2021, 06:43 am
Hola, me parece que estás confundido con el tema de los sockets y estas mezclando algunas cosas, trataré de aclarar.

Vos tenés que aprender sobre sockets, que es un tema que trata sobre conexiones, envío y recepción de datos, protocolos, comunicación, como funciona un servidor y un cliente, etc.
Los sockets los podes aprender de cualquier lenguaje de programación, yo personalmente he aprendido con Python, pero vos estás interesado en aprender con PHP que no está mal pero deberías aprender con otro u otros lenguajes porque PHP no fue destinado para tener mucho soporte respecto a sockets.

Creo que estás confundido creyendo que con aprender sockets en PHP vas a aprender websockets y eso no es correcto, los sockets se usan para todo lo relacionado con la comunicación y el envío y recepción de información, por la tanto el hecho que puedes aprender sobre sockets desde PHP no quiere decir que vas a aprender web sockets porque lo que llamas websockets es la forma que se utilizan los sockets para establecer las conexiones y transferencia de datos desde un cliente (usuario) con un servidor (hosting).

Por ejemplo un servidor web internamente hablando de conexiones es distinta la forma a un servidor IRC de chat, los dos se comunican por medio de sockets, pero el servidor web lo hace por el protocolo HTTP(S) mientras el servidor de chat lo hace por el protocolo IRC, incluso usan cada uno distintos puertos, HTTP utiliza el puerto 80 para las conexiones inseguras mientras el 443 para las conexiones seguras (cifradas), en cambio el IRC utiliza el puerto 6667 para conexiones no cifradas mientras el puerto 6697 lo usa para conexiones seguras/cifradas.

La mejor manera desde mí punto de vista para que lo aprendas y puedas ver cómo funciona todo internamente, es que comiences de 0 usando un lenguaje como Python y leyendo por Google que son los sockets, podrás ver páginas, foros, tutoriales en PDF, etc. y todo ese material te servirá mucho, tenés que mirar códigos de ejemplo de lo más básico, como por ejemplo como crear una conexión a un puerto de escucha y enviarle datos y mirar los datos recibidos.
También podes ver códigos de servidor/cliente y lo vas probando.

Un consejo que te puedo dar es que no hagas copy paste de esos códigos, escribilos a mano, así aprendí yo, como lo harás? muy fácil la ventana de tu programa por ejemplo Notepad++ encogela dejándola abajo o arriba del código a escribir tendiendo como fondo obviamente el código y de ventana activa tu editor de código, miras y escribes atentamente lo que lees.

Después cuando ya tengas más experiencia podrás usar programas como sniffers para saber exactamente como se comunican los programas en raw (crudo) siempre y cuando la conexión establecida entre ambos no esté cifrada.
Es muy interesante ver y aprender sobre los datos que se envían y reciben, porque con esos conocimientos después podrás crear conexiones personalizadas como vos desees, por ejemplo podrías crear un código en Python que haga una petición a un sitio web usando en los headers el user-agent de un celular android y si por ejemplo algún administrador del sitio revisa el log de accesos de apache verá que en x fecha hicieron una petición a su sitio web desde un celular android versión x, modelo x, usando el navegador x, es decir que parecerá como que fue esa petición desde un android cuando en realidad fue apenas desde un simple código usando sockets.


Saludos