首先什么是websocket?

1.websocket和http一样是一种通信协议,是HTML5的一种新的协议。
2.既然有了http协议了,为什么还会有websocket呢?是因为是为了弥补http的单向请求的缺陷的(http的请求只能由客户端发起)
举例来说,我们想了解今天的天气,只能是客户端向服务器发出请求,服务器返回查询结果。HTTP 协议做不到服务器主动向客户端推送信息。
  这种单向请求的特点,注定了如果服务器有连续的状态变化,客户端要获知就非常麻烦。我们只能使用"轮询":每隔一段时候,就发出一个询问,了解服务器有没有新的信息。最典型的场景就是聊天室。
 轮询的效率比较低,而且很浪费资源(因为必须不停的链接,或者http链接始终打开),为了解决这种问题,就出现了websocket。
3.websocket需要握手之后,才能进行彼此的通信
4.websocket的最大特点就是服务器可以主动的给客户端推送消息,客户端也可以主动向服务端发送消息,实现了双向的平等对话,属于服务器推送的一种。

          

websocket的其他特点:

.建立在tcp协议之上,服务器端的实现比较容易
.和http协议有着良好的兼容性,默认端口是80和443,并且握手阶段采用HTTP协议,因此握手的时候不容易屏蔽,能通过各种的HTTP代理。
.数据格式比较轻量,性能开销小,通信效率高。
.可以发送文本,也可以发送二进制数据。
.没有同源限制,客户端可以与任意的服务器通信。
.协议标识是ws(如果加密,是wss),服务器的网址就是url。

socket的通信方式:

            

未完。。。

最新文章

  1. MS15-020漏洞测试
  2. Angular 通过 $http.post 写入本地 JSON 文件
  3. CreateFile函数详解(确实很详细)
  4. zzu--2014年11月16日月潭赛 B称号
  5. 浅谈java内存分配和回收策略
  6. Jupyter Notebook
  7. 让你的代码量减少3倍!使用kotlin开发Android(三) 缩短五倍的Java Bean
  8. Javascript中没有块级作用域(模仿)
  9. Rsync + sersync 实时同步备份
  10. 5.Django cookie
  11. 利用工具将数据库中的表导出到word中
  12. 可遇不可求的Question之SQLSERVER触发器不支持多行插入操作篇
  13. Spring的Bean配置
  14. 20175310 《Java程序设计》第1周学习总结(1)安装虚拟机
  15. net license tool, EasyLicense !
  16. css3动画属性系列之transform细讲scale缩放
  17. mysql基本的增删改查和条件语句
  18. IntelliJ 禁用 Search Everywhere
  19. Windows进程间各种通信方式浅谈
  20. 关于Unity中的Bmpfont的使用

热门文章

  1. day65—angularJS的学习笔记1
  2. NumericStream && Stream综合练习
  3. 阶段3 1.Mybatis_07.Mybatis的连接池及事务_2 连接池介绍
  4. Linx下Keepalived做成服务
  5. 宝塔面板修改用户名和密码报错:TypeError: cannot concatenate 'str' and 'NoneType' objects
  6. Hibernate API的使用(Query、Criteria、SQLQuery对象)
  7. 【Linux开发】【Qt开发】tslibs的配置(触摸屏没有,HDMI屏幕):Qt界面响应USB鼠标
  8. 精读《Optional chaining》
  9. Linux进程状态——top,ps中看到进程状态D,S,Z的含义
  10. shell script简单笔记