我目前正在使用 React Native 進行個人專案。我是網路/移動開發的初學者。先說一下我的情況。當前專案的需求是:
當用戶(主持人)登錄應用程式時,他將轉到二維碼螢屏并向他/她的朋友(客人)顯示二維碼。他們都在一家餐廳里。
他/她的每個朋友都會在同一個應用程式上登錄自己的帳戶,并從手機掃描二維碼。客人然后將選擇一些選單項來訂購。在此之前,主持人螢屏將顯示有關每位客人訂單狀態的螢屏。它會
Not Ready一直顯示,直到客人選擇一些專案。一旦任何客人選擇了他/她的物品,主機螢屏將顯示該客人的更新狀態,并說“準備好”以及他們選擇的物品和價格。我提供了一個線框供您理解。

我的問題是,Host和Guest如何實時通信?我最初的想法是,一旦客人選擇了他/她的訂單,它就會呼叫 API 端點來更新資料庫。另一方面,主機將每隔幾秒鐘呼叫另一個端點以查看資料庫是否已更新。如果是,則主機將相應地更新其螢屏。這是正確的方法嗎?在做一些研究時,我遇到了一種叫做 socket.io 的東西,用于雙向通信。我的機箱適合使用這項技術嗎?我只是要求一些我可以用來實作這個想法的想法/技術/工具。提前致謝。
uj5u.com熱心網友回復:
在每個x持續時間向服務器詢問更新稱為輪詢。輪詢效率較低,因為它會運行以檢查更新,即使不一定有更新。
一個更好的方法是使用 Websockets。Socket.io是一個很好的 JavaScript 庫,可以做到這一點。
Websockets 將如何為您作業的要點
您所有的客人,在掃描二維碼后,可以根據二維碼中的 ID 連接到同一個頻道(也稱為房間)。
現在,無論何時有人選擇他們的訂單,您都可以將帶有該有效負載的事件(假設我們將其命名為“訂單”)“發出”到服務器,然后它可以將其廣播給該頻道中的每個人。
// guest client
socket.emit("order", payload)
主機客戶端可以偵聽此事件并根據需要更新 UI。
// host client
socket.on("order", payload => {
console.log(payload);
});
這樣,您可以完全避免輪詢。您可以瀏覽本指南以了解他們如何實施聊天應用程式以了解該方法。
您還可以使用 Firebase 實時資料庫代替 Socket.io。在這種方法中,您的來賓客戶端將直接更新資料庫,而您的主機客戶端將觀察或監聽這些更改并根據需要更新其 UI。這是使用 Firebase 實時資料庫構建聊天應用程式的指南,因此您可以了解如何進行。
希望這有幫助。:)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/392132.html
