websocket使用HTTP链接

背景

websocket是html5提出的新的协议规范,填补了无法长连接的空缺。在没有websocket之前,由于http是短连接,只能由客户端请求服务器,一些功能(即时通讯/处理耗时的请求等)只能通过轮询来做,不断的轮询服务器是否有新的消息。 
websocket正是为了解决这个问题而生,websocket是一个长连接/全双工的协议。

 

优点


不用频繁送HTTP请求,只需要发送一个HTTP请求进行websocket握手,接下来则可以利用该TCP连接通过websocket协议通讯,避免了传输多个HTTP Header的浪费。
全双工通道,突破了HTTP请求时只能client请求server的限制,server可以直接push消息给client端。
可以边生成数据边传递,不需要等数据生成完毕,提高了效率
websocket数据传输是基于数据帧的,可以分片传输,不需要怕数据太大包容纳不下。

 

 

websocket协议包含三个过程。 
  1. 握手打开连接(使用HTTP协议,通过HTTP协议建立连接,以免服务器不支持websocket直接不予回应) 
  2. 数据传输 
  3. 握手结束连接
 

最近在做一个将数据通过WIFI发给服务器的项目,让手机实时的显示数据波形,开始直接使用http协议,发给服务器端,用网络调试工具可以正常接收,但是与服务器对接的时候,服务器端总是收不到数据或者接收错误,原来服务器端使用的是websocket的协议,于是改用TCP,socket链接,链接IP和port后,发送http header

POST /hc-mc/user/device/dev22/UpdateDeviceInfo HTTP/1.1
Host: 192.168.1.155
Connection: Upgrade
Upgrade: websocket
Origin: /*/

发送http header的时候要注意,最后要加\r\n\r\n,不然服务器端不认为接收到数据或者有时接收到,这可能是服务器端的程序问题。

 

 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值