讲一期websocket 也算是给自己做个笔记吧!
简单讲一下这玩意是啥:
官方的回答自行搜索。
通俗讲就是:是H5出的协议,双向平等对话(服务器到客户端,客户端也可到服务器),属于服务器推送技术的一种。
说一下强大之处:
- 数据格式轻量,通讯高效
- 发送数据可以是二进制也可以是文本
- 可以与任意服务器进行通信,因为通信阶段使用的是Http协议,不容易被屏蔽
- 注意:协议标识符是ws,加密的话是wss(例如:http ,和https)。
常用属性:
- onopen:连接成功后的回调
- onclose:指定连接关闭后的回调
- onmessage:接收服务器数据的函数
- send:客户端向服务器发送数据
- onerror:报错时指定的报错的回调
Python示例代码:
import socket
#AF_INET:服务器之间网络通讯。SOCK_STREAM:流式socket,for Tcp
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(('127.0.0.1', 8002))
sock.listen(5)
#获取客户端socket对象
conn, address = sock.accept()
#获取客户端的【握手】信息
data = conn.recv()
conn.send('发送消息')
流程图(网图):
代码解读:
TCP服务端:
1 创建套接字,绑定套接字到本地IP与端口
socket.socket(socket.AF_INET,socket.SOCK_STREAM) , s.bind()
2 开始监听连接
s.listen()
3 进入循环,不断接受客户端的连接请求
s.accept()
4 然后接收传来的数据,并发送给对方数据
s.recv() , s.sendall()
5 传输完毕后,关闭套接字
s.close()
TCP客户端:
1 创建套接字,连接远端地址
socket.socket(socket.AF_INET,socket.SOCK_STREAM) , s.connect()
2 连接后发送数据和接收数据
s.sendall(), s.recv()
3 传输完毕后,关闭套接字
s.close()