发布于 1970-01-01 08:00
  • 11 个回答
      1. Websocket
      2. Ajax轮询
      3. 长连接(Comet)
      2022-12-01 16:05 回答
    • 楼上的别带坏小朋友了,轮询和websocket太耗服务器了,还是学sf用setinterval请求服务器吧

      2022-12-01 16:05 回答
    • 前端JS可以在捕捉到特定事件后向服务器发送请求,比如当窗口获取焦点时(window.onfocus),查询一次用户消息:

      window.onblur  = function(){document.title = '失去焦点';};
      window.onfocus = function(){document.title = '获得焦点';};
      

      如果只是普通的消息推送(不追求很高的实时性),可以考虑隔10分钟用AJAX轮询一次.

      2022-12-01 16:05 回答
    • 我刚才看了一下segmentfault上消息通知的实现。他是有两种方式同时实现的:
      1.给标签页绑定一个当前页面是否可见事件,当用户把页面切到segmentfault.com域名下的页面时,触发页面可见事件,发送请求。

      javascriptdocument.addEventListener(visibilityChange, function() {
          if(document[state]=="hidden"){
              // 标签页不可见
          }else{
              // 标签页可见
              // 向服务器请求用户的消息
          }
      }, false);
      

      2.打开控制台的network,可以发现,segmentfault应该也是在使用setInterval()在向服务器发送请求,时间间隔差不多是35秒左右。或者使用其他的轮询技术向服务器发送请求

      2022-12-01 16:05 回答
    • 可以实现的方法太多了,比如websocket,或者ajax轮询等等

      2022-12-01 16:05 回答
    • 直接使用ajax就可以了, 比如,使用jQuery, 后台有个url直接轮询即可

      2022-12-01 16:05 回答
    • 可以通过websocket实现,之前测试过flask-websocket,可以用户登录时服务器建立一个room,然后用户加入这个room,当服务端收到相关消息时就判断针对该用户的room是否存在,存在则给这个room发消息。当用户关闭页面时,这个连接会断开,则删除对应room。

      2022-12-01 16:05 回答
    • 应该都是消息推送,搜索关键字:cometd

      2022-12-01 16:05 回答
    • 会不会用的是html5的SEE呢

      2022-12-01 16:05 回答
    • segmentfault社区也是轮询,你把开发者工具打开,看network那一项,等一会就会看到请求的。

      2022-12-01 16:05 回答
    • 大家想多了,就是轮询!

      2022-12-01 16:05 回答
    撰写答案
    今天,你开发时遇到什么问题呢?
    立即提问
    PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有