ajax 长轮询

本文介绍了一种使用Ajax长轮询技术实现消息推送的方法,并指出其待改进之处,建议采用WebSocket来优化实时通讯效果。文章包含前端JavaScript轮询代码及后端消息处理逻辑。

未完成,因为需要换成webscoket来做,该ajax长轮询有待完善

function poll(){
        $.ajax({
            type:"POST",
            url:"ajax",
            async:true,
            data:{
                "receiverType":"single",
                "receiverId":"${receiverId}",
                "senderId":"${senderId}",
            },
            success:function(data){
                $("#content").append("<p><span>${receiverId}:"+data+"</span></p>");
                console.log(data);
            }
        });
        setTimeout(poll,5000);
    }

$(function(){
        poll();

}

  

 

@RequestMapping("/ajax")
    @ResponseBody
    public String ajaxMessage(String receiverType,String receiverId,String senderId) throws InterruptedException {
        System.out.println("receiverType = " + receiverType);
        System.out.println("receiverId = " + receiverId);
        System.out.println("senderId = " + senderId);
        String content = null;
        int i =0;
        boolean end = false;
        while (!end) {
            if(messages!=null) {
                System.out.println(messages.size()+"====================================");
                i++;
                for(Message m : messages){
                    if(m.getReceiver().getType().equals(receiverType) &&
                            m.getFromUserName().equals(receiverId)
                            && m.getReceiver().getId().equals(senderId)){
                        System.out.println("temp = " + m.getContent());
                        return  m.getContent();
                    }
                }
                if(i==20){
                    end = true;
                }
            }
            Thread.sleep(5000);
        }
        return content;
    }

  

转载于:https://www.cnblogs.com/yanqin/p/6672394.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值