网站设计工程师培训,山东川畅信息技术有限公司网站建设,网页游戏排行榜前十名歌,中文网站数量WebSocket 协议
WebSocket#xff1a;在 2008 年诞生#xff0c;2011 年成为国际标准。它允许服务器主动向客户端推送信息#xff0c;客户端也可以主动向服务器发送信息#xff0c;实现了真正的双向平等对话。它是一种在单个 TCP 连接上进行全双工通讯的协议#xff0c;能…
WebSocket 协议
WebSocket在 2008 年诞生2011 年成为国际标准。它允许服务器主动向客户端推送信息客户端也可以主动向服务器发送信息实现了真正的双向平等对话。它是一种在单个 TCP 连接上进行全双工通讯的协议能够更高效地进行实时通信。 传统的轮询浏览器需要不断地向服务器发出 HTTP 请求浪费带宽和服务器资源。
WebSocket 的优点
建立在 TCP 协议之上服务器端实现相对容易。与 HTTP 协议兼容性好默认端口也是 80 和 443握手阶段采用 HTTP 协议。数据格式轻量通信高效。支持文本和二进制数据传输。无同源限制客户端可以与任意服务器通信。协议标识符是 ws不加密和 wss加密
WS 和 WSS
WSWebSocket是一种在单个 TCP 连接上进行全双工通讯的协议。它允许服务器和客户端之间进行实时双向通信。WSS是加密的 WebSocket 协议相当于 WebSocket 加上 SSL/TLS 加密层。 WS SSL/TLS WSS。
python sample
生成无密码保护的自签名证书
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodescommon name 也就是你的domain的name 正式的项目中需要使用第三方认证机构提供的证书
server端代码
import asyncio
import ssl
import websocketsasync def echo(websocket, path):async for message in websocket:await websocket.send(message)ssl_context ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
ssl_context.load_cert_chain(certfilecert.pem, keyfilekey.pem)start_server websockets.serve(echo, localhost, 8765, sslssl_context)asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
client 端代码, python 端
import asyncio
import ssl
import websocketsasync def hello():ssl_context ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)ssl_context.load_verify_locations(cert.pem)uri wss://localhost:8765async with websockets.connect(uri, sslssl_context) as websocket:await websocket.send(Hello, world!)greeting await websocket.recv()print(f {greeting})asyncio.get_event_loop().run_until_complete(hello())其他
正式的wss 需要使用第三方进行认证如let’s encrypt 等服务 而不是自己生成的证书。