WebSocket
前言
WebSocket 是一种基于在单个 TCP 连接上进行全双工通信的协议,是从HTML5开始提供的一种浏览器与服务器之间进行全双工通讯的网络技术,解决了HTTP协议不适用于实时通信的缺点,相较于 HTTP 协议,WebSocket 协议实现了持久化网络通信,可以实现客户端和服务端的长连接,能够进行双向实时通信,协议名为"ws"。
原文链接:
一、http 请求
通过 APP 向 service 发送请求,服务器返回一个响应
客户端拿数据都是需要先发请求,才能拿到数据
模拟一个需求场景,两个人微信聊天,
A 向服务器发送信息,
B 需要接受到 A 发送的信息,B 并没有向服务器发送HTTP 请求,服务器要主动推送数据
图片中的模型是无法满足这个功能的
此时就需要长连接,建立长连接有很多中方式,HTTP 也可以建立长连接,这里学习怎么用 socket 的方式来实现长连接
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
HTTP与WebSocket的区别
- 两者都是基于TCP协议进行数据传输,具有可靠的传输能力,而且都是应用层协议
- HTTP是单向的通信,只能由客户端向服务端发送请求,服务端无法主动向客户端发送消息
- WebSocket是双向通信,客户端和服务端是通过握手建立连接,可实现全双工通信,双方可以同时主动向对方发送消息
- WebSocket在建立连接时数据是通过HTTP协议传输的,但是建立之后,真正传输数据时使用的是更加可靠的TCP协议
二者关系
WebSocket在建立连接时,HTTP通过Upgrade消息头来通知客户端需要采用WebSocket协议来完成这个请求,在发送完此响应最后的空行后,服务器就会切换到WebSocket协议,接口返回状态码为101,表示服务器已经理解了客户端的请求,需要升级协议
二、Socket使用步骤
1. 创建 Socket
APP 创建一个 Socket ,服务器也创建一个 Socket
2. 把 APP的 Socket 和服务器的 Socket 连接起来
需要知道服务器的 ip 地址以及端口号
建立连接完成后,就可以使用 Socket 进行和服务器之间的通信
3. 读和写
把需要读和写的东西通过 socket 传给对方就可以
在其中的一端完成写入,另一端可以完成读取
好处,只要客户端的 socket 和服务器的socket 之间的连接不断开, 服务器和客户端之间可以进行主动消息发送
三、用 uniapp 来实现 socket
1.创建连接 – uni.connectSocket
uni.connectSocket({
url:'ws://icewould.tpddns.cn:18123', // 向哪个服务器的哪个端口发送建立连接的消息
success: (data) => { // 定义当连接建立成功之后需要做的事情
console.log(data) // {"errMsg":"connectSocket:ok"} 服务器返回的 data
}
})
参数分析
- url: 向哪个服务器的哪个端口发送建立连接的消息
- success 定义当连接建立成功之后需要做的事情
其余详见文档…发现没什么好记录的 = =
uniApp全局通过VueX使用websocket收发数据
这篇文章挺详细的