WebSocket是一种应用层协议,允许客户端和服务器之间进行双向通信。WebSocket 协议首先通过创建握手然后通过 TCP 而不是基本 HTTP 实现的消息帧来工作。
WebSockets和其他类似技术,如 SSE(服务器发送事件)和 WebRTC,在服务器需要与连接的客户端保持开放连接的应用程序中很有帮助。在应用程序中使用 WebSockets 的一个很好的例子是聊天应用程序、在线多人游戏和实时工具,如分析和协作工具,那么
如何在Python中实现WebSocket?
WebSockets为我们提供了服务器和连接的客户端之间的全双工双向连接。这意味着一旦建立连接,服务器和客户端都可以推送数据。
如何实现WebSocket?在本教程中,我不会深入探讨
WebSockets 的工作原理。相反,我将向你展示如何使用 Python 来实现使用 WebSocket 的简单应用程序。
如果你想了解有关
HTTP、WebSocket 和 SSE 的更多信息,请查看此站点上解释它们差异的其他教程。
注意:在开始之前,我们假设你熟悉基本的网络概念,例如 HTTP 和 HTTP 请求。要轻松实现这个Python WebSocket教程中的概念,你需要具备基本的 Python 和 JavaScript 编程知识。
第 1 步:环境设置
让我们开始实现一个简单的 WebSocket 服务器,使用浏览器作为客户端连接到服务器。
如何在Python中实现WebSocket?值得注意的是,这个实现的目的不是构建一个庞大的应用程序,而是让你对如何使用 python 和 JavaScript 来创建 WebSocket 应用程序有一个基本的了解。
为此,我们需要安装 Python,最好是 Python 3.6+。
我们还将使用
WebSocket包。
https://websockets.readthedocs.io/en/stable/index.html
安装 Python 后,使用 pip 使用以下命令安装 WebSocket 包:
pip install websockets
一旦你安装了
WebSockets包,我们就可以开始创建服务器和客户端来连接。
第 2 步:创建服务器
首先创建一个目录,我们将在其中为应用程序提供服务——称之为
WebSocket。
在目录中,创建一个文件,并将其命名为 server.py
Python实现WebSocket例子:在 server.py 文件中,添加以下代码行,在 / URL 上实现一个简单的服务器。
import asyncio
import websockets
# create handler for each connection
async def handler(websocket, path):
data = await websocket.recv()
reply = f"Data recieved as: {data}!"
await websocket.send(reply)
start_server = websockets.serve(handler, "localhost", 8000)
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
在服务器文件中,我们导入所需的包 - 在本例中为
asyncIO和
WebSockets。
接下来,我们创建一个处理程序,它接受参数
WebSocket和路径。该
WebSocket的表示服务器(本地主机:8000)的URL。路径是处理程序的 URI——在我们的例子中,URI 是 /。
然后我们继续等待传入的连接和消息。使用收到的数据,我们执行一个操作。在我们的例子中,是一个带有接收数据内容的简单响应。
第 3 步:如何实现WebSocket?创建客户端
如何在Python中实现WebSocket?现在让我们尝试实现一个简单的客户端来连接到服务器。我们将使用浏览器控制台作为客户端以保持本教程的简单性。
创建一个文件并将其命名为 client.html。在文件中,添加以下代码,如下
Python实现WebSocket例子:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>WebSocker Client</title>
</head>
<body>
<button onclick="contactServer">Click Here</button>
</body>
<script>
const socket = new WebSocket('ws://localhost:8000');
socket.addEventListener('open', function (event) {
socket.send('Connection Established');
});
socket.addEventListener('message', function (event) {
console.log(event.data);
});
const contactServer = () => {
socket.send("Initialize");
}
</script>
</html>
保存文件并在浏览器中打开它。
要测试连接是否有效,请单击按钮并检查控制台以获取服务器响应。
单击该按钮后,将向服务器发送一条消息。然后服务器以消息的内容进行响应,从而表明连接已建立。
Python WebSocket教程结论
在本教程中,我们看到了如何使用
Python WebSockets包来实现简单的
WebSocket连接。