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
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
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
2
3
4
如果想了解更多信息,请参考"Configuration"章节。
编辑 (opens new window)
上次更新: 2023/09/07, 12:09:00