使用AJAX,PHP和SQL Long Polling创建基于Web的聊天框?

问题描述 投票:0回答:3

我正在为我和我在大学的朋友创建一个在线聊天框,以便在线使用。在当前配置中,聊天消息存储在主机(我的)上的纯文本文件中,并且每秒都通过AJAX获取,但是,有时它很慢且很小,并不总是有效。

要发送消息,它会将消息传递给JavaScript函数,该函数将值传递给PHP脚本,将其与用户的唯一颜色(存储在本地cookie中)一起写入文件。这是functions.js文件(pastebin):http://pastebin.com/CpGxj5cP

这是发送消息的php文件:

<?php
session_start();
require_once('mysql_connect.php');
date_default_timezone_set("EST");

//Format the message
$date = date('n/j g:i A');
$username = $_SESSION['username'];
$color = $_COOKIE[$username];

$message  = "<font color='" . $color . "'>" . $username . "</font> (" .  $date . "): ";
$message .= $_GET['m'] . "\n";

$file = '../messages.txt';

$handle = fopen($file, 'a');
fputs($handle, $message);

fclose($handle);

//Reset timeout
//$_SESSION['timeout'] = 300;
?>

正如我上面所说,问题是它非常慢。如果有办法比文本文件/ AJAX更好,请告诉我!

javascript php ajax chat long-polling
3个回答
0
投票

是的,如果您使用支持HTML 5的浏览器,则有更好的方法

Web套接字

http://www.tutorialspoint.com/html5/html5_websocket.htm


0
投票

PHP / Ajax聊天源可在http://frug.github.io/AJAX-Chat/上找到

  • 从这个网站下载最新的Standalone ZIP
  • 解压缩下载的文件。
  • 从解压缩文件夹中读取readme.txt文件进行配置。

好好享受。


0
投票

使用PHP查看这个聊天框的完整代码。下载源代码或查看此站点中的现场演示。

http://purpledesign.in/blog/?p=19

`    function getLoginBox() {
    ob_start();
    require_once('login_form.html');
    $sLoginForm = ob_get_clean();

    $sLogoutForm = '<a href="'.$_SERVER['PHP_SELF'].'?logout=1">logout</a>';

    if ((int)$_REQUEST['logout'] == 1) {
        if (isset($_COOKIE['member_name']) && isset($_COOKIE['member_pass']))
            $this->simple_logout();
    }

    if ($_REQUEST['username'] && $_REQUEST['password']) {
        if ($this->check_login($_REQUEST['username'], MD5($_REQUEST['password']))) {
            $this->simple_login($_REQUEST['username'], $_REQUEST['password']);
            return 'Hello ' . $_REQUEST['username'] . '! ' . $sLogoutForm;
        } else {
            return 'Username or Password is incorrect' . $sLoginForm;
        }
    } else {
        if ($_COOKIE['member_name'] && $_COOKIE['member_pass']) {
            if ($this->check_login($_COOKIE['member_name'], $_COOKIE['member_pass'])) {
                return 'Hello ' . $_COOKIE['member_name'] . '! ' . $sLogoutForm;
            }
        }
        return $sLoginForm;
    }
}`

当然,您需要创建一个登录框。请检查我分享的链接。它具有所有细节

© www.soinside.com 2019 - 2024. All rights reserved.