美文网首页
反向ajax

反向ajax

作者: 机器不能学习 | 来源:发表于2018-09-18 14:46 被阅读0次

    http通信是单向通信,也就是说如果没有客户端请求,服务器是不能向客户端发送信息的。
    为了实现服务器的推送等功能,引入了长轮询和websocket.

    什么是长轮询?
    利用ajax,对服务器端进行请求。服务器hold住这个请求,把它长期保存在一个线程安全的集合里。这样服务器就可以在需要时在拿出请求,进行回应。
    这里注意的是js端,用了
    function connect(){
    $.ajax({
    url:"longpolling?method=onOpen",
    cache:false,
    dataType:"text",
    success:function(data){
    connect();
    alert(data);
    }
    });
    }
    这里写成了无线循环,但是在长连接中,由于后台并不是在接收到请求后就立刻发送回应,因此这个链接会被服务器端一直持有。直到回应到达以后,success:function() 才会被执行。之所以在之后立刻重新执行的原因是,需要一个新的长连接再次发回给服务器,让服务器端继续保持直到下一次response的到来。

    websocket的全双工通信。它是又H5提供,多个浏览器支持。
    它使用ws或者是wss协议,直接保持一个长连接。
    它允许和js建立一个远程的链接。
    并且为链接两端提供了函数调用
    send()向远程端发信息,close()关闭该链接。
    监听函数:onopen() 网络建立时触发
    onerror() 网络错误时触发
    onclose() 关闭时触发
    onmessage() 接受消息时触发
    注意的是,类通过@ServerEndpoint()把自己作为一个服务器端点,所以你的线程安全集合里放的是这个端点类。
    这个链接

    当然也有很多开源框架帮助推送
    https://www.cnblogs.com/best/p/5695570.html

    相关文章

      网友评论

          本文标题:反向ajax

          本文链接:https://www.haomeiwen.com/subject/ptaunftx.html