新手问题 使用 Websocket 还是定时发送 ajax 请求?

QueXuQ · 2014年01月11日 · 最后由 jeff_duan 回复于 2014年01月14日 · 8263 次阅读

对于这两个各位是怎么选择的,例如有新文章,会在不刷新页面的情况下,出现提示。 我以前用 faye 的 Websocket 做过类似问题,会有概率出现没接收的情况。感觉定时发送请求这方式会比较保险,实现也相对简单,但是服务器接受这里请求太多怕不怕 hold 不住?

关键还是看应用场景了,访问量有多大?有考虑过浏览器的支持问题么?比如 IE 系。

话说 faye 做的蛮赞的,浏览器支持也不错,如果只是小概率出现没接受的情况下,也是可以容忍的吧,我看 ruby-china 就是用的 faye。

轮询是一种非常非常过时且消耗资源的方法。

websocket 是前沿,但是感觉网络环境太复杂,很容易断开连接。。不知道能不能自动重试。。

#3 楼 @pynix #1 楼 @iamroody 和 3 楼童鞋一样同感,关键我不知道什么时候断了,也不知道应该怎么从新连上。例如我用 ruby-china 就经常遇见这样的情况。所有我挺好奇稳定性是怎么保证的。

#4 楼 @QueXuQ websocket 可以在 onerror 和 onclose 里面重新连接的。 事实上不要求实时的话,轮询应该是比较理想的解决方案。

因为会断,所以和定时刷新的逻辑还是一样的,唯一的区别是需要增加连接没断的时候推送的代码。

其实不一定要上 WebSocket 啊,SSE(IE 用 HTMLFile) 也可以的嘛

#7 楼 @bhuztez 是否 SSE 就不会断?

#5 楼 @saiga 如果每 1 分钟一次的轮询,算不算消耗资源?

#8 楼 @QueXuQ 既然允许一分钟误差,那肯定用轮询....效率问题,由于是短连接,所以消耗不会高的(OSC 首页动弹 10 秒一次)。

#9 楼 @saiga OSC 的也是轮询?10 秒轮询一次?

@QueXuQ 你这个问题放在新手,应该按新手的思路去做。直接使用http://pusher.com/

Basecamp 是用轮询。

目前我的应用也是轮询,主要是初期做轮询最简单 (考虑到 IE8 的支持,同时不想弄 flash)

需要 登录 后方可回复, 如果你还没有账号请 注册新账号