• 2014-03-23

    让你的网站支持手机二维码登录

    Views: 23374 | No Comments

    如果你的网站能支持二维码登录, 用户打开手机扫描一下, 网页上就立即变为已登录状态了, 是不是很酷? 像腾讯的微信, 手机淘宝等, 都支持用手机扫描二维码登录 Web 版, 极大的方便了用户. 这项技术不仅能增加网站的用户体验, 也是把传统的 Web 端和新潮移动端结合起来的重要手段.

    手机二维码登录网站, 并不是一项多么有难度的技术, 而是多个现有成熟技术的融合. 下图是整个系统的架构示意:

    Continue reading »

    Posted by ideawu at 2014-03-23 16:15:12 Tags: ,
  • 2014-03-20

    各种 Comet 技术优缺点对比

    Views: 20749 | 8 Comments
    script tag iframe ajax websocket
    polling 低效, 可以跨域 / 低效, 无法跨域 /
    long-polling 中效, 可以跨域 中效, 无法跨域 中效, 无法跨域 /
    streaming / 高效, 无法跨域 / 高效, 兼容性差

    经过对比, 最终只有两种 comet 技术胜出: script tag long-polling, 和 iframe streaming(forever iframe).

    script tag long-polling

    这是最通用, 浏览器中兼容最好, 使用最广泛的方案, 包括微信网页版等知名网站都使用本方案.

    iframe streaming(forever iframe)

    本方案虽然效率好一些, 但无法跨域. 另外, 从 Chrome ver.31 起, 一个浏览器只能向一个域名发起唯一的一条连接, 所以, 如果你的网站打开了多个 tab, 那么只能有一个 tab 收到服务器推送, 其它 tab 是收不到的!

    Posted by ideawu at 2014-03-20 13:43:04 Tags:
  • 2014-02-15

    长连接技术的应用

    Views: 21355 | 2 Comments

    Web 技术太流行而且太强大了, 以至于我们在开发任何应用时, 都会想到利用 Web 技术. Apache, PHP, Java, HTTP, JSON, ... 只需要简单且流行的技术, 就能搭建一个系统.

    但是, 对于另一类重要的需要服务器向客户端推送数据的应用, 传统的 Web 技术就不适用了, 因为 Web 的基础网络协议 HTTP 是请求响应模式, 一旦客户端不请求, 服务器就无法将数据推送给客户端. 而如果客户端的请求太过频繁(轮询), 那么就会对服务器造成巨大的压力.

    为此, 需要有一种被称为长连接服务的技术. 长连接技术包含客户端和服务器两部分, 可以看成是传统的 Client-Server 架构. 而对应的长连接服务器, 就提供了网络连接管理和消息发送的功能. 比较有意思的是, 长连接技术也被应用到了 Web 领域, 实现所谓的"服务器推"技术, 也称 Comet 技术.

    Continue reading »

    Posted by ideawu at 2014-02-15 14:53:50 Tags:
  • 2013-06-28

    nginx-push-stream-module 笔记

    Views: 33851 | No Comments

    nginx-push-stream-module 模块可用于 comet, 服务器向浏览器实时推送消息. 这个模块功能和稳定性还不错, 只是没考虑和外部系统的接口, 所以扩展性比较差. 例如权限验证, 连接的建立和断开等基础信息和外部共享等, 都缺失.

    这里记录几个关键函数, 打算利用 syslog 和外部系统进行信息共享.

    连接建立事件

    ngx_http_push_stream_subscriber_handler();
    

    连接断开事件

    ngx_http_push_stream_cleanup_request_context();
    ngx_http_push_stream_worker_subscriber_cleanup_locked();
    
    Posted by ideawu at 2013-06-28 11:09:46 Tags: ,
|<<<12>>>| 2/2 Pages, 10 Results.