• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

拉勾上和微博这个技术是怎么实现的?

php 搞代码 3年前 (2022-01-25) 25次浏览 已收录 0个评论
文章目录[隐藏]

<body>

在我没有任何刷新的情况这个消息框是自动弹出的,像微薄的私信也是?这个不会是用AJAX一直请求的吧?好奇是怎么实现的,等大神回答

回复内容:

<body>

在我没有任何刷新的情况这个消息框是自动弹出的,像微薄的私信也是?这个不会是用AJAX一直请求的吧?好奇是怎么实现的,等大神回答

%本文来源gaodai#ma#com搞*代#码9网#搞gaodaima代码

  1. Websocket
  2. Ajax轮询
  3. 长连接(Comet)

楼上的别带坏小朋友了,轮询和websocket太耗服务器了,还是学sf用setinterval请求服务器吧

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

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

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

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

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

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

可以实现的方法太多了,比如websocket,或者ajax轮询等等

直接使用ajax就可以了, 比如,使用jQuery, 后台有个url直接轮询即可

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

应该都是消息推送,搜索关键字:cometd

会不会用的是html5的SEE呢

segmentfault社区也是轮询,你把开发者工具打开,看network那一项,等一会就会看到请求的。

大家想多了,就是轮询!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:拉勾上和微博这个技术是怎么实现的?

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址