位置:首页  >   读书笔记  > 第二十三讲-IM通讯协议

第二十三讲-IM通讯协议

第一章:IM通讯协议

      IM应用场景

      1.即时通信

         聊天

       2,消息推送

            好友上线,微博被赞

        3,其他领域

            股票价格,商品拍卖,监控报警

     2. 协议种类

         协议用途:数据封装与传输,连接有效性检测,消息接收保证

         1,私有协议

             二进制:QQ     文本 :MSN

          2.公开协议

           XMPP(可扩展通讯和表示协议):Google Talk, vysper ,消息基于XML

           SIP:微软,IBM

            Bayeux:comet ,消息基于json   #并发量高

       2. XMPP

          开源服务器端:

            openfire 支持上万并发

             ejabber 高效,支持分布式

         android客户端

             www.beem-project.com

       3. 音视频协议

            1,rtmp

                 flash插件

            2,WebRTC

                 支持html5

            适合那些场景?

第二章:WebIM多种实现方式

       1.Ajax短轮询,不需要服务器端特殊支持

        2,flash XMLSocket ,java applet 套接字

       3,comet

            基于HTTP长连接,无须在浏览器端安装插件的“服务器推”,技术为comet

             a 长轮询

             b iframe streaming

        4, html5的webSocket(webrtc)

        5, html5的event source

      每种实现方式的特点?

       实现方式和通讯协议的关系?

   短轮询特点:

         优点:

               标准http,服务器端不需要定制

          缺点:

               消耗大量网络资源

               服务器需要频繁查询大量数据

               不实时

3, 长轮询Comet

     1,服务器阻断请求,没有数据时不立即返回,延迟一个长时间,比如50s 再返回

      2,有数据服务器立即返回

      3,服务器返回超时,客户端发起新的连接

        http://samples.app.ucai.cn/quanzhan_webim/longpolling/send.html


          优点:

           节约资源

           响应比较及时,是实时的吗?

           浏览器兼容性好

          缺点:

                服务器需要维持连接,占用一定资源

例子html   php

    

        4, iframe Comet

             1.页面嵌入隐藏iframe ,src 指向长连接请求不断开

               content-encoding: chunked

             2, 服务器一直往src写入js数据获取消息

             优点:

                   无须重复发起连接

              缺点:

                     浏览器会一直显示加载状态


5. html5 event source

          1.客户端与服务器建立连接后不断开

          2,服务器有事件才返回数据

            只能在同一个域下

            服务器单向            

6. html5 websocket

          1,按需双向通信

           2,可在不同域

和event source一样 ,浏览器兼容性有限


第三章:WebIM开源框架

    1,https://github.com/wandenberg/nginx-push-stream-module

   安装:

查看安装参数

--user=www --group=www --prefix=/alidata/server/nginx --with-http_stub_status_module --without-http-cache --with-http_ssl_module --with-http_gzip_static_module

添加模块

--user=www --group=www --prefix=/alidata/server/nginx --with-http_stub_status_module --without-http-cache --with-http_ssl_module --with-http_gzip_static_module --add-module=/alidata/quzhan23_im/nginx-push-stream-module

重新编译

./configure --user=www --group=www --prefix=/alidata/server/nginx --with-http_stub_status_module --without-http-cache --with-http_ssl_module --with-http_gzip_static_module --add-module=/alidata/quzhan23_im/nginx-push-stream-module

    2,支持多种方式

     http://samples.app.ucai.cn:8080/send.html

      samples.app.ucai.cn:8080/longpoling.html

         iframe

         longpolling

          jsonp

         eventsource

           websocket

     3,生产环境可用

 

       2.特点

        1,jsonp

           同长轮询,可以跨域

         2,EventSource

               Content-Type:text/event-stream;charset=utf-8

              同WebSocket,html5支持

             轻量,干净


          代码:例子:todo;

           64分


                   


       



















0
文章属性
精彩评论