簡體   English   中英

PARSE-處理並發請求?

[英]PARSE - Handling concurrent requests?

我使用解析創建了一個基於回合的繪圖游戲,您可以在其中與任何人玩游戲。 一次只能有一個用戶可以玩。 有三回合。 在玩家的朋友列表中,一切正常->您開始新游戲,或收到通知您繼續游戲的信息。

我正在嘗試實現多人游戲模式->為此,我在數據庫中有單獨的列表,其中包含所有可用的公共游戲。 如果將某個游戲公開,那么我會在該列表中創建一個新對象,並帶有指向游戲的指針。 每次用戶搜索可用的游戲時,他都會查詢該列表,如果找到了記錄,我會刪除此特定列表中的公共游戲對象,以使其對其他用戶不可用,然后游戲繼續進行。

我想知道以下->解析如何處理並發請求? 是否可能有多個用戶同時搜索,試圖刪除同一對象(請參見下面的代碼)? 我已經在查詢中跳過了隨機索引來避免這種行為,但這似乎很瑣碎。

這是我的雲代碼示例,用於處理請求:

Parse.Cloud.define('findPublicGame', function(req, res) {
    var query = new Parse.Query("public");
    query.count({
        success: function(number) {
            if (number == 0) {
                // no public games - reject
                res.success(number);
            } else {
                // public game found - handle
                query.limit(1)
                var randomIndex = parseInt(Math.random() * number);
                query.skip(randomIndex);
                query.find({
                    success: function(object) {
                        // delete public
                        object[0].destroy({
                            success: function(_data) {
                                res.success(_data);
                            },
                            error: function(error) {
                                res.error();
                            }
                        });
                    },
                    error: function(error, object) {
                        res.error(error);
                    }
                });
            }
        },
        error: function(error) {
            res.error(error);
        }
    });
});

假設破壞一個已經被破壞的物體會導致錯誤,這是否正確?

我有一個想法,在公共游戲對象上添加一個beforeDelete函數,以檢查它是否仍然可用,但是我現在試圖將請求數量保持在較低水平。

如果有人能啟發我,我就很榮幸!

假設破壞一個已經被破壞的物體會導致錯誤,這是否正確?

以我的經驗,不,這是不正確的。 我一直使用直接在Android和iOS API中可用的delete方法,而不是在解析雲中調用方法,但是對於Android和iOS API中的delete方法,在已經刪除的對象上調用delete不會引發錯誤。 它就像刪除成功一樣繼續進行。

我有一個想法,在公共游戲對象上添加一個beforeDelete函數,以檢查它是否仍然可用,但是我現在試圖將請求數量保持在較低水平。

這是您最好的選擇。 通常,您正在處理“對象修改”,因此您將檢查類似“修改時”的時間戳,但是由於要刪除對象,因此只需要檢查對象是否仍然存在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM