Comunidad de diseño web y desarrollo en internet online

Chat En Ajax

Citar            
MensajeEscrito el 06 Jul 2015 02:18 am
Tengo un chat en PHP, pero no logro hacerlo en tiempo real al mostrar los mensajes, aqui les dejare el ejemplo y diganme por que no me sale lo que quiero, aqui les dejo el chat:
chat.php :
<?php
session_start();
require_once(conexion.php");
if(isset($_SESSION['usuario']))
{
?>
<html>
<head>
<title>You Anime Chat: Global</title>
<script src="../jquery.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$(".config_chat").toggle(function(i) {
$(".sd_opts_lik").css({'cursor':'pointer'}).show();
i.preventDefault();
},
function() {
$(".sd_opts_lik").hide();
});
});
</script>
<script src="jquery-2.1.4.min.js" type="text/javascript"></script>
<script async src="menjs.js" type="text/javascript"></script>
<style type="text/css">
div.wind_ifram_user_status {
border: solid 1px rgb(0,0,0);
background: rgb(255,255,255);
position: absolute;
left: 1055px;
top: 11px;
width: 205px;
height: 580px;
max-width: 100%;
}
textarea {
width: 1040px;
height: 50px;
resize: none;
}
iframe {
border-left: solid 1px rgb(0,0,0);
border-top: solid 1px rgb(0,0,0);
border-right: solid 1px rgb(0,0,0);
border-bottom: solid 1px rgb(0,0,0);
}
.config_chat {
position: absolute;
left: 1150px;
top: 20px;
z-index: 999;
}
.config_chat {
cursor: pointer;
z-index: 999;
}
.sd_opts_lik {
position: absolute;
border: solid 1px rgb(0,0,0);
backgound: rgba(0,0,0,0.8);
left: 1120px;
top: 40px;
}
.chat_name {
position: absolute;
top: 190px;
left: 1090px;
top: 15px;
}
button {
border: rgba(0,0,0,1);
background: rgba(0,0,0,1);
color: rgb(255,255,255);
}
button:hover {
cursor: pointer;
}
.wind_ifram_user_more {
border: 1px solid rgb(0,0,0);
width: 210px;
height: 48px;
position: absolute;
left: 1050px;
top: 597px;
z-index: 999;
}
a {
position: relative;
left: 400px;
}
a.bl2 {
position: relative;
left: 400px;
}
a:hover {
color: rgb(0,255,0);
}
‪#‎user_class‬-alert-connect {
position: absolute;
left: 1060px;
top: 20px;
background: rgb(0,0,0);
width: 10px;
height: 10px;
border-radius: 10px;
}
</style>
</head>
<body>
<div name="iframe" class="wind_ifram_user_status"></div>
<div id="user_class-alert-connect"></div>
<table width="500" height="580">
<form action="send.php" method="post" name="menj">
<tr>
<td> <iframe src="mensajes.php" id="iframe" name="iframe" width="1040" height="580"></iframe> </td>
</tr>
<tr>
<td> <textarea name="mensaje"></textarea> <input type="hidden" name="fechaandtime" /><button type="submit" name="enviar">Enviar</button> </td>
</tr>
<tr>
<img src="../imagenes/topcoat-settings.svg" class="config_chat" /><td class="chat_name"><strong><?=$_SESSION['user']?></strong></td> <a class="sd_opts_lik" onclick="window.location.replace('logout.php')" style="display: none;">Cerrar Sesion</a>
</tr>
</form>
<div id="result"></div>
</table>
<div class="wind_ifram_user_more">
</div>
<img src="" alt="Emoticons"/>
<a href="http://tuweb.com" target="_blank">Copyright 2015 For &copy; Tu Web</a>
<a class="bl2" href="‪#‎condiciones‬" target="_blank">Terminos & Condiciones</a>
</body>
</html>
<?php
} else {
?>
<html>
<head>
<title>You Anime Oficial Chat: Global</title>
<meta http-equiv="pragma" content="no-cache" />
<style type="text/css">
html {
background: url("imagenes/angel_anime51_chocolaloveless_mini.jpg");
}
.page_all {
color: ‪#‎fff‬;
border: solid 1px rgb(0,0,0);
background: rgb(0,0,0);
border-radius: 5px;
position: absolute;
top: 200px;
left: 450px;
width: 345px;
height: 100px;
}
.center {
text-align: center;
}
input[type="submit"] {
border: none;
}
input[type="submit"]:hover {
color: rgb(0,0,0);
cursor: pointer;
background: rgb(0,255,0);
text-shadow: 1px 1px 1px #000;
opacity: 0.9;
}
.letter {
font-size: 13px;
}
a:hover {
color: ‪#‎00FF00‬;
text-decoration: none;
}
</style>
</head>
<body>
<b class="page_all center">Debes Iniciar Sesion Para Poder Utilizar El Chat <br/> <input type="submit" onclick="window.location='login.php'" value="Iniciar Sesion" /> <br /> <p class="letter center"><a href="">Ver Reglas Del Chat</a></p>
<p class="letter center">Copyright 2015 By: © <a href="http://tuweb.com">Tu Web</a></p> </b>
</body>
</html>
<?php
}
?>
mensajes.php :
<?php
session_start();
require_once("conexion.php");
if(isset($_SESSION['user'])) {
$select = "SELECT * FROM chat ORDER BY id DESC";
$query = mysqli_query($con,$select);
$rows = mysqli_num_rows($query);
if($rows>0)
{
while ($row = mysqli_fetch_array($query))
{
?>
<?
if(isset($_SESSION['user']) && $_SESSION['rango'] == 2)
{
?>
<a href="../../erase.php?id=<?=$row['id']?>"><img src="../../imagenes/delete.gif"></a>
<?
} else {
?>
&nbsp;
<?
}
?>
<html>
<head>
<style type="text/css">
pre {
color: rgb(255,0,0);
}
</style>
</head>
<body>
<div id="mensaj">
<?=$row['rank']?> <strong><?=$row['user']?></strong>: <?=$row['mensaje']?> <?=$row['fechaandtime'];?> <br />
</div>
</body>
</html>
<?
}
} else {
?>
&nbsp;
<?
}
}
?>
// disculpen los errores de seo que hay en este archivo mensajes.php
send.php :
<?php
date_default_timezone_set("America/Mexico_City");
session_start();
include_once("emoticones.php");
include_once("bb_code.php");
require_once("conexion.php");
if(isset($_POST['enviar']) || $mensaje = htmlspecialchars($_POST['mensaje'])) {
$user = $_SESSION['user'];
$rank = $_SESSION['rango'];
$mensaje = htmlspecialchars($_POST['mensaje']);
$fechaandtime = date("d-m-Y H:i");
$mensaje = expresiones($mensaje);
$mensaje = code_and_more($mensaje);
$insert = "INSERT INTO chat (user,mensaje,fechaandtime)";
$insert.= "VALUES ('{$user}','{$mensaje}','{$fechaandtime}')";
mysqli_query($con,$insert);
header("Location: chat.php");
} else {
}
?>
Bueno como veran arriba este un chat que funciona a la perfecion ahora solo quisiera que por ajax recargara o cargara los mensajes sin que la pagina recarge tengo este ajax pero esta mal creo aqui se los dejo tambien:
mens.js :
$(document).on("ready", function(){
var mens;
$("form").submit(function(e) {
e.preventDefault();
//hace la búsqueda
$("iframe").delay(1000).queue(function(e) {
$("iframe").html('<img src="../imagenes/working.gif" />').fadeOut(1000);
$.ajax({
beforeSend: function() {
mens = document.menj.mensaje.value;
},
type: "POST",
url: "send.php",
data: $("form").serialize(),
dataType: "html",
error: function(){
alert("error petición a la llamada ajax, intente de nuevo");
},
success: function(data){
$("iframe").load("mensajes.php");
$("‪#‎iframe‬").fadeIn(1000).html(data);
e();
},
});
});
});
});
Perdonen por este codigo ajax es que soy malo en esto, pero algo si se es que data es lo que trae al iframe en este caso aunque esto me funciona hasta refrescar mi chat y a la hora de enviar el mensaje si se registra los mensajes en mi base de datos no me los muestra en mi chat y tengo que recargar para vizualizarlos osea no sirve 77, alguien me podria yudar a traer los mensajes en ajax, porfa se los agradeceria mucho y slaudos programadores n.n

Por EmpresasWebDesing

5 de clabLevel



Genero:Masculino  

Diseñador Web

chrome
Citar            
MensajeEscrito el 06 Jul 2015 11:58 am
EL chat se basa en pull, es decir cada X tiempo tira del servidor y se actualiza. Cuanto más request hagas, mas actualizado estará pero provocará mas carga, es un delicado balance entre responsividad y sobrecarga. Si quieres algo que se actualice realtime tendrás que usar uno basado en sockets y no en requests HTTP

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

chrome
Citar            
MensajeEscrito el 07 Jul 2015 09:26 am
sockets? ok entiendo un poco aunque dime que me recomiendas para saber sobre esto? node.js o angular.js o?

y gracias por tu respuesta compañero :)

Por EmpresasWebDesing

5 de clabLevel



Genero:Masculino  

Diseñador Web

chrome
Citar            
MensajeEscrito el 07 Jul 2015 12:13 pm

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 07 Jul 2015 03:07 pm
he, cierto no es lo mismo xD, y bueno he decidi usar node.js y socket.io justo como lo decia la pagina que me distes :D , lo malo es que no tengo nada de conocimientos en node y lo bueno dicen y se ve que es facil de implementar y comprender :), supongo que el chat de facebook usa estos dichosos sockets, no es asi?

Por EmpresasWebDesing

5 de clabLevel



Genero:Masculino  

Diseñador Web

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.