现在我用Laravel创建聊天应用程序。并且可以在通过ajax发送消息后发送消息并刷新messageBox容器。但是,如果我向他发送新消息,我就无法刷新我的聊天伙伴页面,如果我的聊天伙伴向我发送新消息,则反过来刷新页面。在我的数据库中,我有一个消息显示状态字段。如果没有看到消息它将反过来为1.如果通过ajax有新消息,我如何刷新页面或div内容? 这是我的发送代码:
<script type="text/javascript">
var username;
var submitButton;
var textarea;
$(document).ready(function(){
username = $('#username').html();
textarea = $('#texxt');
submitButton = $('.send');
$(textarea).keyup(function(e){
if(e.keyCode == 13){
sendMessage();
$('body').load('').fadeIn('slow');
}
});
});
function sendMessage(){
var message = $('#texxt').val();
var user_id = $('#user_id').val();
if(message.length > 1){
$.post('/message',{
message: message,
id: user_id,
_token:'{{csrf_token()}}'
},
function(data){
$('#texxt').val('');
});
}
}
</script>
答案 0 :(得分:1)
要实现这一目标,您需要考虑:https://socket.io
所有作业都在触发事件,因此您可以使用此事件向其他用户显示消息,或者获取新消息操作......但要做到这一点,您需要使用套接字:)
答案 1 :(得分:0)
使用Ajax
,您必须定期查看setInterval
并查看邮件是否已到达,然后再对其执行操作:
setInterval(function(){
$.getJSON("/my_check_message.php",
{user_id: user_id},
function (answer) {
if answer.new_messages.length>0){
//do something
}), 5000)
它假设您从php页面answer.new_messages
作为数组返回(您可以有多个新消息)
编辑 5000
代表5000毫秒。所以这将每5秒进行一次检查。根据您的需求进行调整!
答案 2 :(得分:0)
使用laravel echo,它可以显示一个socket.io服务器,您可以使用echo将后端中的事件广播到前端客户端。