前后端知识库 前后端知识库
首页
    • JavaScript
    • React
    • Vue
  • Python
  • Sanic
  • Linux
  • Ansible
归档
GitHub (opens new window)
首页
    • JavaScript
    • React
    • Vue
  • Python
  • Sanic
  • Linux
  • Ansible
归档
GitHub (opens new window)
  • Sanic

    • 开始
    • Routing
    • 请求数据
    • 响应
    • 静态资源
    • 异常
    • 中间件 和 监听器
    • 蓝图
    • WebSocket
    • 配置
    • Cookies
    • 处理装饰器
    • 流
    • 基于类的视图
    • 自定义协议
    • SSL 例子
    • 日志
    • 测试
    • 部署
    • 扩展
    • 贡献
    • API Reference
  • Python

  • backend
  • Sanic
devin
2023-09-07

WebSocket

# WebSocket

Sanic 支持 WebSocket,可以通过以下方式建立一个 WebSocket:

from sanic import Sanic
from sanic.response import json
from sanic.websocket import WebSocketProtocol

app = Sanic()

@app.websocket('/feed')
async def feed(request, ws):
    while True:
        data = 'hello!'
        print('Sending: ' + data)
        await ws.send(data)
        data = await ws.recv()
        print('Received: ' + data)

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8000, protocol=WebSocketProtocol)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

另外,可以使用app.add_websocket_route方法来替换装饰器的方式:

async def feed(request, ws):
    pass

app.add_websocket_route(feed, '/feed')
1
2
3
4

WebSocket 路由的处理程序接收请求作为第一个参数,并且接收一个 WebSocket 协议对象作为第二个参数。该协议对象具有send和recv方法,用于发送和接收数据。

你可以通过app.config来设置自定义的 WebSocket 配置,例如:

app.config.WEBSOCKET_MAX_SIZE = 2 ** 20
app.config.WEBSOCKET_MAX_QUEUE = 32
app.config.WEBSOCKET_READ_LIMIT = 2 ** 16
app.config.WEBSOCKET_WRITE_LIMIT = 2 ** 16
1
2
3
4

如果想了解更多信息,请参考"Configuration"章节。

编辑 (opens new window)
上次更新: 2023/09/07, 12:09:00
蓝图
配置

← 蓝图 配置→

Theme by Vdoing | Copyright © 2023-2023 devin | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式