1. Con una cuenta podrás:

    • Publicar preguntas y pedir ayuda
    • Crear tutoriales
    • Acceder a contenido privado
    • Convertirte en un Héroe de la web
    Cerrar notificación
  2. Eres nuevo en la comunidad y necesitas ayuda?
    Sigue estos pasos y recomendaciones antes de publicar tu duda:
    Cerrar notificación

Ayuda ¿notificaciones con socket?

Tema en 'PHP y MySQL' comenzado por Angel Paiba D&D, 19 de Junio de 2017.

Tags:
  1. Angel Paiba D&D

    Angel Paiba D&D Miembro

    Se incorporó:
    7 de Enero de 2016
    Mensajes:
    73
    Me gusta recibidos:
    4
    Puntos de trofeos:
    8
    Género:
    Hombre
    Ocupación:
    Estudiante
    Localización:
    Venezuela
    Página web:
    Hola amigos, tengo muchas pregunta que me gustaria que me respondieran

    Tengo una web, me gustaria poder enviar notificaciones de escritorio por google chromer en tiempo real
    es decir tendría un panel donde me preguntaria la url de la imagen el titulo y la descripcion al hacer click se enviara la notificacion

    por lo que tengo entendido eso es con socket pero no tengo muy claro que es socket y que es web socket cual es la diferencia y que es cada uno, como puedo utilizar socket es muy dificil utilizarlos? que necesito para instalar socket puedo intalar socket en un servidor windows? o donde puedo o no necesita instalacion todo a socket muchas gracias! busque en google pero una vez mas :( me gano estos temas donde no hay videos es dificil entender a completo
     
  2. gammafp

    gammafp
    Moderador
    Miembro del Equipo

    Se incorporó:
    12 de Enero de 2015
    Mensajes:
    804
    Me gusta recibidos:
    376
    Puntos de trofeos:
    63
    Género:
    Hombre
    Un socket es la unión de una ip + puerto (TCP) a eso se le denomina socket, ejemplo: (192.168.0.1:666) eso es un socket.
    Ahora lo que tu necesitas hacer es crear ese panel dependiendo del lenguaje de programación tiene una librería u otra de socket, entonces lo que harías es abrir un socket y en la web conectarte a ese socket.

    ¿Que es websocket?
    Gracias a HTML5 surgieron los websocket, es una forma de conectarse a este tipo de servicio mediante un socket (ip + puerto) al servicio que ha creado el socket y poder enviar y recibir mensajes a tiempo real.

    Ahora el problema o no problema reside en que el web socket tiene una forma propia de hacer la conexion por seguridad.

    Funciona de la siguiente manera:
    Entre el cliente (la web) y el servidor (tu panel) se tiene que hacer un handshake (negociación de los detalles de la conexión), con lo cual cada uno se verifica al otro, y poder mantener una conexión estable.

    -> El cliente hace una petición HTTP al servidor tal que así:

    Código (Text):
    GET /chat HTTP/1.1
    Host: example.com:8000
    Upgrade: websocket
    Connection: Upgrade
    Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
    Sec-WebSocket-Version: 13
    <- El servidor responderá al cliente con otra petición HTTP.
    Esta petición el servidor la tiene que crear a partir del mensaje anterior a partir del "sec-WebSocket-Key", este código lo coge, se decodifica la base64 a texto y este se concatena a este otro numero mágico "258EAFA5-E914-47DA-95CA-C5AB0DC85B11", ese número mágico no se cambia y forma parte del protocolo, una vez concatenado se codifica todo a base64, se coloca despues del "Sec-Web-Socket- Accept" y se envía la cabecera HTTP y queda algo tal que así:

    HTTP/1.1 101 Switching Protocols
    Upgrade: websocket
    Connection: Upgrade
    Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

    y despues ya se ha establecido el socket y puedes enviar y recibir mensajes como dios manda.

    Te lo he dicho de manera resumida pero hay que hacer mas trabajo de conversión de datos, como al concatenar el sec-websocket-key y el numero mágico hay que pasarlo a hexadecimal esa cadena y luego convertirlo a base64, no recuerdo muy bien. Si quieres hacer algo de ese tipo es mejor usar la versión fácil del web socket y usar nodeJS con socket.io que facilita mucho el trabajo de handshake.

    Instalas socket.io lo requieres en tu proyecto y luego pones el js que te proporciona socket.io y a usarlo.

    Referencias:
    MOZILLA COMO HACER UN SERVIDOR SOCKET.
    socket.io
    wikipedia

    Att: Gammafp, técnico superior web.
     
    A Maddenamy, Dawud y AngelKrak les gusta esto.

Comparte esta página