Foros del Web » Programando para Internet » PHP »

Sockets en php (chat) - Pasos

Estas en el tema de Sockets en php (chat) - Pasos en el foro de PHP en Foros del Web. Buenos días; Necesito hacer un chat en php, que envíe cadenas de texto entre los usuarios conectados... Estuve leyendo sobre consultas anteriores relacionadas al tema; ...
  #1 (permalink)  
Antiguo 26/05/2011, 06:20
 
Fecha de Ingreso: septiembre-2010
Mensajes: 39
Antigüedad: 13 años, 7 meses
Puntos: 0
Pregunta Sockets en php (chat) - Pasos

Buenos días;
Necesito hacer un chat en php, que envíe cadenas de texto entre los usuarios conectados... Estuve leyendo sobre consultas anteriores relacionadas al tema; pero no me queda claro lo siguente:
El servidor de chat tiene que hacer lo siguiente:
Cita:


1° Crear el socket
  • socket_create()

2° Vincularle una IP y un puerto (bind)
  • socket_bind()

3° Dejar que este socket escuche las conexiones (listen)
  • socket_listen()

4° Aceptar las conexiones escuchadas (accept)
  • socket_accept()

5° Escribir y Leer Informacion (read & write)
  • socket_read()
  • socket_write()

6° Cerrar las conecciones (socket close)
  • socket_close()

La aplicación cliente; tiene que hacer lo siguiente:

Cita:


1° Crear el socket
  • socket_create()

2° Vincularle una IP y un puerto (bind)
  • socket_bind()

3° Conectar al socket (connect)
  • socket_connect()

4° Tener un bucle infinito en el que se envie y reciba la info (read & write)
  • socket_read()
  • socket_write()

5° Cerrar las conexiones (close socket)
  • socket_close()

Ahora bien; si lo citado arriba es correcto y no me saltíe ningun paso... ¿Como organizar esto en php?

Redacto un archivo server_chat.php que se ocupe de ralizar las tareas del servidor; y en la parte del chat (La parte gráfica) coloco el script del cliente?

Funciona esto así como una aplicacion cliente/servidor (?) Ej:

APLICACIÓN CLIENTE/SERVIDOR EN PYTHON
Cita:
Código:
Cliente:

#!/usr/bin/env python

import socket

clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
clientsocket.connect(('localhost',8000))
while 1:
        data = raw_input('>')
        clientsocket.send(data)
        if not data: break
        newdata = clientsocket.recv(1024)
        print newdata
clientsocket.close()

-----------------------------------------------------------------------------------------
Servidor:

#!/usr/bin/env python

import socket


serversocket    =   socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.bind(('localhost', 8000))
serversocket.listen(1)
clientsocket, clientaddress = serversocket.accept()
print 'Conexion desde: ', clientaddress
while 1:
        data = clientsocket.recv(1024)
        if not data: break
        clientsocket.send(data)
clientsocket.close()
  #2 (permalink)  
Antiguo 26/05/2011, 08:22
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Sockets en php (chat) - Pasos

Si bien lo que redactas es correcto, hay una situacion, PHP se ejecuta en el servidor por lo que no puedes mantener un pool abierto en el cliente.

Ahora lo que puedes hacer es crear el servidor en PHP y ejecutarlo desde la consola para que este escuchando (usando PHP-CGI), y desde Flash o Java te conectas a ese server y mandas mensajes. Esto lo vas a tener que hacer porque PHP solamente se ejecuta en el servidor por lo cual para cada mensaje tendrías que crear el socket, escribir, leer mensajes nuevos y cerrar el socket antes de poder desplegar información en el cliente.

Saludos.
  #3 (permalink)  
Antiguo 26/05/2011, 08:59
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Sockets en php (chat) - Pasos

te dejo un enlace que quizá te pueda interesar

http://www.zeitoun.net/articles/comet_and_php/start


saludos.
__________________
More about me...
~ @rhyudek1
~ Github
  #4 (permalink)  
Antiguo 26/05/2011, 09:18
 
Fecha de Ingreso: septiembre-2010
Mensajes: 39
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Sockets en php (chat) - Pasos

El chat de facebook; como esta echo para tener una idea (?) Por que me tengo que meter en el mundo de flash y java; y... y... :P
  #5 (permalink)  
Antiguo 26/05/2011, 09:19
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Sockets en php (chat) - Pasos

Cita:
El chat de facebook; como esta echo para tener una idea (?) Por que me tengo que meter en el mundo de flash y java; y... y... :P
comet, o server push.. lee el enlace que te deje


saludos.
__________________
More about me...
~ @rhyudek1
~ Github

Etiquetas: chat, sock, socket
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 19:43.