Python Falcon Websocket
WebSocket 是客户端和服务器之间的持久性连接,在两者之间提供双向、 全双工 的通信。通信是在HTTP上通过一个TCP/IP套接字连接进行的。它可以被看作是HTTP的升级,而不是一个协议本身。
HTTP的局限性之一是,它是一个严格的半双工或单向的协议。另一方面,通过WebSockets,我们可以发送基于消息的数据,类似于UDP,但具有TCP的可靠性。WebSocket使用HTTP作为初始传输机制,但在收到HTTP响应后保持TCP连接的活力。同样的连接对象,它可以用于客户端和服务器之间的双向通信。因此,可以使用WebSocket APIs构建实时应用程序。
Falcon的Websocket支持仅适用于ASGI应用程序。为了提供Websocket功能,资源类应该有 on_websocket() responder coroutine。
Websocket请求也可以被钩子和中间件截获。传递的不是 Response 对象,而是 falcon.asgi.WebSocket 对象。
WebSocket在Falcon中是如何运作的
下面的例子演示了WebSocket在Falcon应用程序中的功能。首先,我们有一个 on_get() 响应器,可以渲染一个模板。
例子
客户端浏览器显示一个带有文本字段和一个按钮的表单,点击按钮后,创建一个 websocket 对象,并启动 on_websocket() 响应器。它接受用户输入的信息,并将其回传给客户端,前缀为 “信息文本是”。
输出
启动Uvicorn服务器并访问 http://localhost:8000/ws URL以显示聊天表单。
输入一些文本并按下 发送 按钮。