长连接: 一个链接上可以连续发送多个数据包,在链接期间,如果没有数据包发送,需要双方发链路检查包
TCP/IP: TCP/IP 属于传输层,主要解决网络中的数据传输问题,只管传输数据。但这样对传输的数据没有一个规范的封装、解析等处理。使得传输的数据难以识别,所以才有了应用层协议对数据进行的封装、解析等,如http协议。
HTTP: HTTP协议是应用层协议,用于分装解析传输数据。 从HTTP1.1开始其实就默认开启了长链接,也就是请求头header中可以看到Connection:Keep-alive。但是长连接只是说保持了(服务器可以告诉客户端保持时间Keep-Alive:timeout=20max=20)这个TCP通道,并采用服务器和客户端应答模式(Request-Response),不需要再创建一个链接通道,做到一个性能优化。
socket: 与HTTP协议不一样,socket不是协议,他是在程序层面上对传输层协议(像TCP/IP)的接口封装。我们知道传输层的协议,是解决数据在网络中传输的问题的,那么socket(套接字)就是传输通道两端的接口。
Websocket: WebSocket是包装成了一个应用层协议作为socket,从而能够让客户端和远程服务端通过web建立全双工通信。
WebSocket API 是HTML5 推出的东西。在客户端我们可以通过HTML5 所提供的API 对websocket 进行创建、发送数据、监听信息、监听报错等功能( HTML5 WebSocket )
我们知道WebSocket 是在Socket的基础上实现的,所以我们要做的是对现有的Socket协议进行升级。
步骤: 客户端发送websocket请求-->服务端接受并识别该请求-->对该请求协议进行升级-->返回给客户端 -->websocket 通道建立 -->客户端/服务端发送数据
协议升级
在这里需要注意的是头部信息和头部信息中的Sec-Websocket-Accept的值。
该值需要是一个通过base64加密的哈希值(sha1)。 而该加密所用的数据是客户端传过来的sec-websocket-key的值和MAGIC_STRINC内的固定值。 对MAGIC_STRINC的说明
Webscoket 中传输的数据是 数据帧(frame)
数据帧有多种类型 主要有:文本型、二进制数据
数据帧结构
每一列代表一个字节,一个字节8位,每一位又代表一个二进制数。
创建数据帧
解数据帧
心跳检查
由于websocket 不进行交互会关闭通道所以,才有了心跳检查。
websocket与和他http的区别
基于node实现websocket协议
使用nodeJS在HTTP上实现WebSocket
如何让我的服务器返回正确的Sec-WebSocket-Accept标头值
学习WebSocket协议—从顶层到底层的实现原理
websocket 协议帧 解析
nodejs实现Websocket的数据接收发送
前台可以设置一个setinterval,定期发送ajax监听后台,也可以用HTML5的websocket,html5的方式比较新,消息比较短,适合做聊天系统。在WebSocket API中,浏览器和服务器只需要要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。
webSocket是html5新引入的技术,允许后台随时向前端发送文本或者二进制消息,WebSocket是一种全新的协议,不属于http无状态协议,协议名为“ws”,这意味着一个websocket连接地址会是这样的写法
WebSocket是为解决客户端与服务端实时通信而产生的技术。其本质是先通过HTTP/HTTPS协议进行握手后创建一个用于交换数据的TCP连接,此后服务端与客户端通过此TCP连接进行实时通信。
消息推送选择极光。JPush 是经过考验的大规模 App 推送平台,每天推送消息量级为数百亿条。 开发者集成 SDK 后,可以通过调用 API 推送消息。同时,JPush 提供可视化的 web 端控制台发送通知,统计分析推送效果。 JPush 全面支持 Android, iOS, Winphone 三大手机平台。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)