WebSocket
Installation
使用pip:
pip install websocket
Usage
simple usage
receive text, and send back text. but web socket must receive text before send, because web socket needs to know whether the connection is still connected.
import websocket
@app.socket("/sockets")
async def socket():
await websocket.accept() # wait the connection request
while True:
text = await websocket.receive_text()
if text == "Exit": # or anything else
websocket.close()
break
await websocket.send_text(f"Hi, {text}")
send with binary code
@app.socket("/bin_socket")
async def bin_socket():
await websocket.accept()
while True:
bin = await websocket.receive_bytes()
if bin == b"":
websocket.close()
break
do_something_with(bin)
websocket.send_text("Receive!")
Frontend
just use react with ahooks
as example
import {useWebSocket} from "ahooks"
export default () => {
// useWebSocket will auto connect to the socket. socket url should start by `ws://` or `wss://`
const {sendMessage, connect, disconnect, readyState} = useWebSocket(`ws://${baseURL}/sockets`, {
onError: (err) => {
console.error(err)
},
onMessage: (event) => {
console.log(event.data)
sendMessage("continue")
}
})
useEffect(() => {
if (readyState === WebSocket.OPEN) sendMessage("eniverz")
}, [readyState, sendMessage])
useEffect(() => {
return () => {
disconnect() // disconnect websocket when the component unmount
}
})
}