Fastapi websocket 및 vue 3(Composition API)
11578 단어 vuepythonfastapijavascript
1부: FastAPI
virtualenv 만들기(선택 사항)
FastAPI 및 필요한 모든 것을 다음과 같이 설치하십시오.
pip install fastapi uvicorn websockets
생성
main.py
파일from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def root():
return {"msg":"welcome"}
및 실행 -
uvicorn main:app --reload
브라우저에서 이 링크 열기
http://127.0.0.1:8000
이와 같은 것을 본다면 갈 준비가 된 것입니다.
이제 websocket 엔드포인트를 생성해 보겠습니다.
from fastapi import FastAPI, WebSocket
app = FastAPI()
# @app.get("/")
# def root():
# return {"msg":"welcome"}
@app.websocket("/ws")
async def websocket_endpoint(websocket: WebSocket):
await websocket.accept()
while True:
data = await websocket.receive_text()
print(data)
await websocket.send_text(f"{data}")
이
async
함수는 await websocket.accept()
를 통해 프런트엔드에서 연결을 수락할 때까지 기다립니다. 그런 다음 연결이 생성되면 websocket은 연결이 닫힐 때까지 프런트엔드와 통신할 준비가 됩니다. data = await websocket.receive_text()
이 코드 줄을 통해 프런트엔드에서 데이터를 수신합니다.
await websocket.send_text(f"{data}")
그리고 이 코드 라인으로 데이터를 프런트엔드로 보낼 수 있습니다. 이것이 우리가 양방향 커뮤니케이션을 만드는 방법입니다.
파트 2: Vue3(프런트엔드)
vue3 응용 프로그램을 만들어 봅시다- Vue3 installation guide
npm init vue@latest
모든 상용구 코드를 삭제합니다. 그리고 작업을 더 쉽게 하기 위해
app.vue
파일에 코드를 작성해 보겠습니다.<script setup>
import { onMounted,ref } from 'vue'
const data = ref()
const inputData = ref()
const connection = new WebSocket("ws://localhost:8000/ws")
function submit() {
connection.send(inputData.value)
}
onMounted(() => {
connection.onmessage = function(e){
data.value = e.data
}
})
</script>
<template>
<h1>hello {{data}}</h1>
<input type="text" v-model="inputData" @keyup.enter="submit()">
<button @click="submit()">submit</button>
<RouterView />
</template>
fastAPI websocket으로 연결 구축 시작-
const connection = new WebSocket("ws://localhost:8000/ws")
마운트된 후크에서 우리는 백엔드에서 보내는 메시지를 듣기 시작합니다. 백엔드에서 오는 데이터가 무엇이든 우리는 해당 데이터를 저장하고 다음을 통해 Tamplate에서 렌더링할 수 있습니다.
onMounted(() => {
connection.onmessage = function(e){
data.value = e.data
}
})
<!-- in template -->
<template>
<h1>hello {{data}}</h1>
</template>
입력 필드를 만들고 프런트엔드에서 데이터를 보내고 백엔드를 통해 프런트엔드에서 해당 데이터를 다시 받겠습니다.
<template>
<h1>hello {{data}}</h1>
<input type="text" v-model="inputData" @keyup.enter="submit()">
<button @click="submit()">submit</button>
<RouterView />
</template>
그리고
submit()
함수에서 백엔드로 데이터를 보냅니다.
function submit() {
connection.send(inputData.value)
}
짜잔.... 끝났습니다 😎. 이제 더 많은 실험을 할 수 있습니다. 데이터베이스에서 데이터를 검색하고 이와 같은 프런트 엔드로 보냅니다. 또는 당신이 원하는 무엇이든.
소스 코드: https://github.com/siumhossain/fastApi-Vue3-webSocket
Reference
이 문제에 관하여(Fastapi websocket 및 vue 3(Composition API)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/siumhossain/basic-fastapi-websocket-and-vue-3-composition-api-1dhb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)