0

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

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

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

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

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

4

1 回答 1

3

根据需要创建聊天系统并不难,但您必须知道自己在做什么。您首先需要一个文件,该文件将在您单击用户时最初加载聊天。

加载聊天

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

然后,您将需要能够 ping 聊天,以便您可以接收新消息。我建议使用Web 套接字或更简单的方法server-sent events。我不建议投票。

平聊

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

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

虽然 SSE 的支持少于仅使用 AJAX 轮询,但它们工作得更好,并允许您与服务器保持开放连接,最终节省资源。您可以查看一些适用于 SSE 的多边形填充。

您还需要一个发送功能。

发信息

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 之前,我已经创建了一个聊天。大多数逻辑都在服务器端。

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

于 2013-07-20T01:43:03.730 回答