博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android WebSocket协议简介
阅读量:6426 次
发布时间:2019-06-23

本文共 1205 字,大约阅读时间需要 4 分钟。

WebSocket协议是一种双向通信协议,它建立在TCP之上,同http一样通过TCP来传输数据,但是它和http最大的不同有两点:1.WebSocket是一种双向通信协议,在建立连接后,WebSocket服务器和Browser/UA都能主动的向对方发送或接收数据,就像Socket一样,不同的是WebSocket是一种建立在Web基础上的一种简单模拟Socket的协议;2.WebSocket需要通过握手连接,类似于TCP它也需要客户端和服务器端进行握手连接,连接成功后才能相互通信。

下面是一个简单的建立握手的时序图:

这里简单说明一下WebSocket握手的过程。

当Web应用程序调用new WebSocket(url)接口时,Browser就开始了与地址为url的WebServer建立握手连接的过程。

1.     Browser与WebSocket服务器通过TCP三次握手建立连接,如果这个建立连接失败,那么后面的过程就不会执行,Web应用程序将收到错误消息通知。

2.     在TCP建立连接成功后,Browser/UA通过http协议传送WebSocket支持的版本号,协议的字版本号,原始地址,主机地址等等一些列字段给服务器端。

例如:

[html] 
  1. GET /chat HTTP/1.1  
  2. Host: server.example.com  
  3. Upgrade: websocket  
  4. Connection: Upgrade  
  5. Sec-WebSocket-Key:dGhlIHNhbXBsZSBub25jZQ==  
  6. Origin: http://example.com  
  7. Sec-WebSocket-Protocol: chat,superchat  
  8. Sec-WebSocket-Version: 13  

3.     WebSocket服务器收到Browser/UA发送来的握手请求后,如果数据包数据和格式正确,客户端和服务器端的协议版本号匹配等等,就接受本次握手连接,并给出相应的数据回复,同样回复的数据包也是采用http协议传输。

[html] 
  1. HTTP/1.1 101 Switching Protocols  
  2. Upgrade: websocket  
  3. Connection: Upgrade  
  4. Sec-WebSocket-Accept:s3pPLMBiTxaQ9kYGzzhZRbK+xOo=  
  5. Sec-WebSocket-Protocol: chat  

4.     Browser收到服务器回复的数据包后,如果数据包内容、格式都没有问题的话,就表示本次连接成功,触发onopen消息,此时Web开发者就可以在此时通过send接口想服务器发送数据。否则,握手连接失败,Web应用程序会收到onerror消息,并且能知道连接失败的原因。

转载于:https://www.cnblogs.com/lechance/p/4373219.html

你可能感兴趣的文章
跟我一起数据挖掘(20)——网站日志挖掘
查看>>
在Solaris 下使用Os Watcher 监控Oracle
查看>>
1.9 使用PuTTY远程连接Linux;1.10 使用xshell连接Linux;1.11 PuT
查看>>
[unity3d]为我们的游戏添加好看的字体
查看>>
android 查询工具源代码
查看>>
java 常用工具类 ——集合
查看>>
我的友情链接
查看>>
随机打印出数组的元素(分治思想)
查看>>
cgroup 介绍 与使用
查看>>
dwz表单提交响应
查看>>
我的友情链接
查看>>
Linux 下mail 的简单使用
查看>>
DNS解析过程
查看>>
对容器、迭代器的理解
查看>>
忘记mysql root密码的修改方法
查看>>
MFC小结
查看>>
2018年终总结
查看>>
oracle修改varchar2为number
查看>>
Linux C 文件的输入/输出操作
查看>>
Android 进程和服务相关资料
查看>>