我目前正在为聊天应用程序制作一种黑客方式,只是为了真正玩游戏。
会发生什么情况,您允许用户登录或注册,然后他们将被发送到index.php这是一个聊天框。
发送消息后,此消息将存储在数据库中。然后html使用foreach循环在php中加载消息。
所以现在,一旦我发送消息,我就使用AJAX将此消息发送到php文件,该文件处理它并将其发送到数据库。我现在正试图弄清楚如何允许以下代码段在一个时间间隔内运行,以便它可以通过' x'来填充聊天内容。秒。
sendbutton.click(function(e){
e.preventDefault();
var message = sendinput.val();
var data = {
message: message
};
if(message != ''){
$.ajax({
type: 'POST',
data: data,
url: 'sendmessage.php',
success: function(data){
if(data == "True"){
sendinput.val('');
// Could do an ajax get request here.
}
},
})
}
});

<?php
$messages = Database::getInstance()->query('SELECT * FROM message ORDER BY createdAt ASC');
foreach($messages->results() as $message){
$owner = Database::getInstance()->get('user', array('ID', '=', $message->ID));
$ownername = $owner->first()->username;
$toDrop = <<<ETO
<div class="message">
<div class="message-name">
<p>$ownername</p>
</div>
<div class="message-content">
<p>$message->message</p>
<p class="message-time">$message->createdAt</p>
</div>
</div>
<div class="clear"></div>
ETO;
print $toDrop;
}
?>
<!-- begin snippet: js hide: false console: true babel: false -->
&#13;
您无法运行此代码段,但我确实认为这可以大致了解我实现或尝试实现的目标。
答案 0 :(得分:0)
好的,我现在有一个解决方案,甚至不需要获得间隔,但我不确定这是否是正确的方法。
我做了一个AJAX get请求,用来获取该请求的响应来填充div。
$.ajax({
type: 'POST',
data: data,
url: 'sendmessage.php',
success: function(data){
if(data == "True"){
sendinput.val('');
$.ajax({
type: 'GET',
url: 'todrop.php',
success: function(data){
$('.messages').html(data);
}
})
}
},
})
答案 1 :(得分:0)
我理解它的游戏,同时如果你要在一个拥有更多人的网站上测试它,那么它将开始杀死服务器。创建了2个连接,因此池模型(每隔x秒或每个msg ppl发送后检查新的msgs)和db都不适合聊天。
如果您已经希望这样做,我建议您将数据库切换到redis,这要快得多,并且您可以设置存储数据的到期时间,但实际上您可以使用WebSockets或其他更实际的数据时间解决方案 请参阅此https://github.com/Flynsarmy/PHPWebSocket-Chat或只搜索带有websockets的php / js实时聊天。