鍍金池/ 問答/PHP  網(wǎng)絡(luò)安全/ 電影選座,基于swoole時時更新數(shù)據(jù),這樣是否正確

電影選座,基于swoole時時更新數(shù)據(jù),這樣是否正確

描述:
1.用戶A訪問選座頁面,和服務(wù)器建立連接,通知socket服務(wù)器,然后從數(shù)據(jù)庫拿到已購買的座位ID,返回給客戶端,客戶端進行座位鎖定。(此步驟之前是用ajax輪訓,現(xiàn)在打算換掉ajax用websocket)

2.用戶B選擇座位下單,此時新的訂單入庫,用戶A的頁面如何更新座位數(shù)據(jù),是不是在用戶B下單后,并且訂單信息插入數(shù)據(jù)庫后,再去拿到當前已經(jīng)和socket建立連接ID,然后推送座位信息。把剛剛購買的座位推送給客戶端。

問題:
我上面描述的并沒有涉及提交訂單15分鐘后如果沒有支付,那選擇的座位將被釋放。只是想先把socket這塊的邏輯走通,建立長連接,時時更新座位信息,我上面這樣的邏輯正確嗎,如果不是這樣,煩請各位幫忙提供些思路呢。

回答
編輯回答
賤人曾

1.如果你需要在一個用戶夠票成功后讓所有同時在購票頁面的用戶都無法點擊這個座位,那就需要在A用戶完成后光爆所有在線用戶這個座位已被購買。
2.15分鐘的支付時間,可以給每個位置加個鎖,15分鐘的過期時間,用redis或者緩存都不難實現(xiàn)吧。

2018年6月16日 00:12
編輯回答
獨白

Swoole 應(yīng)該也有廣播事件,
之前用 workeman 做過
思路是:

用戶進入選座 =>  用戶加入某個組(比如電影A組)
A用戶訂票 => 推送(廣播事件)推給電影A組 => B用戶接收到數(shù)據(jù)判斷是哪個座位(進行鎖定操作)


2018年9月18日 10:29
編輯回答
孤慣

swoole搭建websocket服務(wù)端,用戶長連接websocket,當座位被選了,通知所有選這個座位的客戶端。

2017年11月20日 05:48
編輯回答
殘淚

swoole直接push數(shù)據(jù)給websocket客戶端就可以了,客戶端做好onmessage回調(diào)處理

2017年3月21日 14:17
編輯回答
鹿惑

已經(jīng)建立了長連接了,就沒必要用ajax了。
另外可以用websocket,這個方便一點

2017年11月15日 14:16
編輯回答
小曖昧

已經(jīng)被選的座位,給當前正在選這場電影的頁面廣播一下。

2018年6月25日 16:16
編輯回答
檸檬藍

都用swoole了還用什么ajax輪詢,有人選座位了,通知給該頁面的所有客戶端某個位置被選了,頁面數(shù)據(jù)更新一下(不是刷新)就行了。

2018年1月18日 12:13