我正在创建一个社交网络类型的交易,我想添加一个聊天功能。
目前我有一个home.php,上面有朋友列表,朋友列表是通过jQuery和PHP加载的,如下所示:
function LoadList() {
$.get("friends_feed.php",
function (data) {
$('div#friendsfeed').html(data);
}
);
}
对于每个被加载到列表中的朋友,我想让它在你点击他们的名字时创建一个固定在屏幕底部的div,这个div将是一个聊天框。我希望能够简单地通过PHP和Ajax加载它。如何处理?
编辑:我只希望聊天在两个人之间。用户和他们的朋友。答案 0 :(得分:3)
创建一个你想要的聊天系统并不是太难,但你必须知道你在做什么。您首先需要一个文件,当您单击用户时,该文件最初会加载聊天。
function loadChat (userid) {
$.get("/ajax/getChat.php", {
userid: userid
}, function (data) {
//add the chat
});
}
然后,您需要能够对聊天进行ping操作,以便您可以接收新消息。我建议使用web sockets或更简单的方法server-sent events。我不建议投票。
服务器发送的事件可能如下所示:
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之前创建了一个聊天。大多数逻辑都在服务器端。
我不确定这是否有帮助,但我认为这可能会给你一点想法。