diff --git a/functions/package.json b/functions/package.json index d6893ea..31292ce 100644 --- a/functions/package.json +++ b/functions/package.json @@ -11,7 +11,7 @@ "logs": "firebase functions:log" }, "engines": { - "node": "18" + "node": "20" }, "main": "lib/index.js", "dependencies": { diff --git a/functions/src/functions/server/streaming.ts b/functions/src/functions/server/streaming.ts new file mode 100644 index 0000000..c10c1c4 --- /dev/null +++ b/functions/src/functions/server/streaming.ts @@ -0,0 +1,14 @@ +import { CallableRequest, CallableResponse } from "firebase-functions/v2/https"; + +export const sleep = async (milliseconds: number) => { + return await new Promise((resolve) => setTimeout(resolve, milliseconds)); +}; +export const streamingFunc = async (request: CallableRequest, response?: CallableResponse) => { + for await (const num of ["1", "2", "3", "4", "5"]) { + // res.write(num + "\n"); + response?.sendChunk({ num }); + await sleep(1000); + } + + return {num: "12334"}; +}; diff --git a/functions/src/index.ts b/functions/src/index.ts index 45224e9..cc0c738 100644 --- a/functions/src/index.ts +++ b/functions/src/index.ts @@ -15,3 +15,5 @@ import exportIfNeeded from "./common/exportifneeded"; exportIfNeeded("hono_server", "server/hono", exports); exportIfNeeded("express_server", "server/express", exports); exportIfNeeded("express_server_v2", "server/express_v2", exports); + +exportIfNeeded("streamingCall", "server/streaming", exports); diff --git a/functions/src/wrappers/server/streaming.ts b/functions/src/wrappers/server/streaming.ts new file mode 100644 index 0000000..1c25e8d --- /dev/null +++ b/functions/src/wrappers/server/streaming.ts @@ -0,0 +1,12 @@ +import { onCall } from "firebase-functions/v2/https"; + +import { streamingFunc } from "../../functions/server/streaming"; + +export default onCall( + { + region: "asia-northeast1", + timeoutSeconds: 10, + }, + async (request, response) => { + return await streamingFunc(request, response); +}); diff --git a/src/utils/functions.ts b/src/utils/functions.ts index 88fb548..e159b8e 100644 --- a/src/utils/functions.ts +++ b/src/utils/functions.ts @@ -2,3 +2,4 @@ import { functions } from "@/utils/firebase"; import { httpsCallable } from "firebase/functions"; export const testFunctions = httpsCallable(functions, "test"); +export const streamingFcuntion = httpsCallable(functions, "streamingCall"); diff --git a/src/views/MyPage.vue b/src/views/MyPage.vue index e45e05c..9f1b7c4 100644 --- a/src/views/MyPage.vue +++ b/src/views/MyPage.vue @@ -4,11 +4,21 @@