我使用jquery移动对话框页面作为聊天框,因此当用户向另一个用户发送聊天请求,并且接收用户接受请求时,会成功地在两端动态创建新的对话框页面。问题是,当一个用户在接收用户打开对话框页面之前将消息发送给另一个用户时,内容不会添加到页面中,但是当接收用户打开页面时,发送者发送另一条消息,消息被添加,如果接收用户关闭对话框页面并且发送方发送另一条消息,则当接收方打开对话框页面时,将显示新消息。这意味着必须至少打开一次对话框页面才能动态添加内容。有没有办法解决这个问题
继承消息的服务器端代码
function send_msg($clientID, $message)
{
global $Server;
global $CLIENT;
global $USERMAP;
$me = $CLIENT[$clientID][2];
$logmsg = new SQLquery;
$logmsg->db_query("INSERT INTO chat_messages (user_hash, chat_token, chat_message, send_to) VALUES (?, ?, ?, ?)", $me,$message->chat_token, $message->msg, $message->send_to_user );
if(isset($USERMAP[$message->send_to_user]))
{
$resp["action"]= "message";
$resp["chat_token"]= $message->chat_token;
$resp["msg"] = $message->msg;
$resp["user"]= $message->send_to_user;
$resp["msuasa"] = "shitmananana";
var_dump($resp);
var_dump($USERMAP[$message->send_to_user]);
$Server->wsSend($USERMAP[$message->send_to_user], json_encode($resp));
}
}
这里是如何创建页面*注意*页面是从模板中克隆的:
function create_chat_page(user, chat_token) {
var sel_id = "#" + user;
$("#chat_page").clone().insertAfter("#chat_page").attr("id", chat_token).attr("data-chat_to", user).trigger("create");
var pic_thum = $(sel_id + " img").attr("src").substring(36);
$("#" + chat_token + " .user_chat_icon").html("<img src='../../photos/users/icons/icon_" + pic_thum + "'/>");
$(sel_id + " h2").clone().addClass("user_chat_name").insertAfter("#" + chat_token + " .user_chat_icon");
}
客户端在发送消息时从消息中删除消息
function chat_inc_sort(data)
{
switch (data.action)
{
case "message":
sort_message(data);
break;
case "rec_req":
process_req(data);/*********/
break;
case "accept":
accept_req(data);
break;
case "reject":
reject_req(data);
break;
case "set_status":
set_status(data.user, "online");
break;
case "unset_status":
set_status(data.user, "offline");
break;
}
}
这个函数调用putMessage函数
function sort_message(data)
{
var d = new Date();
var ixesha = d.getHours().toString() + ":"+ d.getMinutes().toString();
putMessage(data.user.toString(), data.chat_token.toString(),data.msg.toString(),ixesha);
}
这是收到的消息如何在屏幕上播放
function putMessage(user, chat_token, msg, time) {
alert(time);
var sel_id = "#" + chat_token;
$(sel_id + " div .chat_box").append("<div>" + time + "<p class='usr_txt'>" + msg + "</p></div>");
}
这是克隆的模板
<div id="chat_page" class="chat_screen" data-role="page" data-theme="b" data-close-btn="none">
<div data-role="header" data-position="fixed">
<span class="user_chat_icon" data-inline="true" class="ui-btn-left"></span>
<a href="#" data-inline="true" class="ui-btn-right">close</a>
</div>
<div class="chat_box" data-role='content'></div>
<div data-role="footer" data-position="fixed">
<textarea class="msg_box" data-inline="true" cols="30" rows="2" maxlength="500"></textarea>
<a class="send_msg" data-role="button" data-inline="true" data-theme="a">send</a>
</div>
</div>