如何在Python中实现WebSocket?详细例子

2021年11月9日17:14:42 发表评论 2,474 次浏览
WebSocket是一种应用层协议,允许客户端和服务器之间进行双向通信。WebSocket 协议首先通过创建握手然后通过 TCP 而不是基本 HTTP 实现的消息帧来工作。 WebSockets和其他类似技术,如 SSE(服务器发送事件)和 WebRTC,在服务器需要与连接的客户端保持开放连接的应用程序中很有帮助。在应用程序中使用 WebSockets 的一个很好的例子是聊天应用程序、在线多人游戏和实时工具,如分析和协作工具,那么如何在Python中实现WebSocketWebSockets为我们提供了服务器和连接的客户端之间的全双工双向连接。这意味着一旦建立连接,服务器和客户端都可以推送数据。 如何实现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()
在服务器文件中,我们导入所需的包 - 在本例中为asyncIOWebSockets。 接下来,我们创建一个处理程序,它接受参数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 WebSocket教程结论

在本教程中,我们看到了如何使用Python WebSockets包来实现简单的WebSocket连接。
木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: