PHP和JQuery聊天

时间:2013-07-20 01:32:21

标签: php javascript jquery mysql ajax

我正在创建一个社交网络类型的交易,我想添加一个聊天功能。

目前我有一个home.php,上面有朋友列表,朋友列表是通过jQuery和PHP加载的,如下所示:

function LoadList() {
    $.get("friends_feed.php",
        function (data) {
            $('div#friendsfeed').html(data);
        }
    );
}

对于每个被加载到列表中的朋友,我想让它在你点击他们的名字时创建一个固定在屏幕底部的div,这个div将是一个聊天框。我希望能够简单地通过PHP和Ajax加载它。如何处理?

编辑:我只希望聊天在两个人之间。用户和他们的朋友。

1 个答案:

答案 0 :(得分:3)

创建一个你想要的聊天系统并不是太难,但你必须知道你在做什么。您首先需要一个文件,当您单击用户时,该文件最初会加载聊天。

加载聊天

function loadChat (userid) {
    $.get("/ajax/getChat.php", {
        userid: userid
    }, function (data) {
        //add the chat
    });
}

然后,您需要能够对聊天进行ping操作,以便您可以接收新消息。我建议使用web sockets或更简单的方法server-sent events。我不建议投票。

Ping Chat

服务器发送的事件可能如下所示:

var pinger = new EventSource("/ajax/pingMessages/" + userid);
pinger.onmessage = function (data) {
    data = data.data;
    // append messages
};

虽然SSE的支持少于仅使用AJAX进行轮询,但它们的工作效果更好,并且允许您与服务器保持开放连接,最终节省资源。 SSE有一些poly填充,你可以看看。

您还需要一个发送功能。

发送消息

function send (userid) {
    $.post("/ajax/send.php", {
        userid: userid,
        message: $.trim($('.chat[data-id*="'+ userid +'"] input[type="text"]').val())
    });
}

注意所有这些请求仅接受userid。在服务器端,您可以考虑当前用户ID。

您应该为消息设置1个表。给对话一个独特的id并从那里开始。您需要在服务器端执行比在实际JavaScript中更多的操作。

我在使用服务器发送的事件和AJAX之前创建了一个聊天。大多数逻辑都在服务器端。

我不确定这是否有帮助,但我认为这可能会给你一点想法。