作家
登录

WebSocket实现原理

作者: 来源: 2017-07-11 16:29:23 阅读 我要评论

 
  • extend_payload_len_bits = 2; 
  •  
  • // consts of ((fin + rsv1/2/3 + opcode) + payload-len bits + extend-payload-len bites + mask bit len + payload len) 
  •  
  • frame_size = 1 + 1 + extend_payload_len_bits + MASK_BIT_LEN + payload_size; 
  •  
  • payload_len_bits = 126; 
  •  
  •   
  •  
  • payload_bit_offset += extend_payload_len_bits; 
  •  
  • else if (payload_size > 0xffff && payload_size 0xffffffffffffffffLL) { 
  •  
  • extend_payload_len_bits = 8; 
  •  
  • // consts of ((fin + rsv1/2/3 + opcode) + payload-len bits + extend-payload-len bites + mask bit len + payload len) 
  •  
  • frame_size = 1 + 1 + extend_payload_len_bits + MASK_BIT_LEN + payload_size; 
  •  
  • payload_len_bits = 127; 
  •  
  • payload_bit_offset += extend_payload_len_bits; 
  •  
  • else { 
  •  
  • if (ws->error_cb) { 
  •  
  • ws_error_t *err = ws_new_error(WS_SEND_DATA_TOO_LARGE_ERR); 
  •  
  • ws->error_cb(ws, err); 
  •  
  • free(err); 
  •  
  •  
  • return ; 
  •  
  •  
  •   
  •  
  • *out_size = frame_size; 
  •  
  • char *data = (*out) = (char *)malloc(frame_size); 
  •  
  • char *buf_offset = data; 
  •  
  •   
  •  
  • bzero(data, frame_size); 
  •  
  • *data = flags & 0xff; 
  •  
  •   
  •  
  • buf_offset = data + 1; 
  •  
  •   
  •  
  • // set mask bit = 1 
  •  
  • *(buf_offset) = payload_len_bits | 0x80; //payload length with mask bit on 
  •  
  •   
  •  
  • buf_offset = data + 2; 
  •  
  • if (payload_len_bits == 126) { 

  •   推荐阅读

      Linux_基于Docker搭建Redis集群

    应用redis-6379为主机,其余两台为大年夜机应用 docker exec -ti 容器ID /bin/bash 分别进入三个Redis容器进入容器后,应用 redis-cli 敕令,连接redis办事端连接办过后,应用 info replication 查看当前机械的角色未>>>详细阅读


    本文标题:WebSocket实现原理

    地址:http://www.17bianji.com/lsqh/36156.html

  • 关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)