當(dāng)前業(yè)務(wù)是這樣:
老師端在直播的時候會把沒一個操作記錄到一個TXT文件里,當(dāng)直播結(jié)束時,服務(wù)端把這個TXT命令導(dǎo)入到mongodb數(shù)據(jù)庫中。 當(dāng)學(xué)生來看回放時,使用定時器功能,每1秒發(fā)送一次數(shù)據(jù)到前臺(查詢數(shù)據(jù)是一次可以預(yù)先查詢1000條, 然后檢索這1000條,取出1秒內(nèi)的數(shù)據(jù)發(fā)到前臺);定時器的ID可能會一直變化,因為用戶可以暫停,拖進(jìn)度,就會有新的定時器產(chǎn)生(老的定時器會被刪除)
這樣的業(yè)務(wù)應(yīng)用定時器的時候有什么需要注意的嗎?當(dāng)前我開的定時器是在當(dāng)前進(jìn)程,沒有新開task。
有沒有更好的方法?
能不能把定時器放到task中,外層控制task的開啟和關(guān)閉。
比如:當(dāng)用戶點擊開始播放時,啟動一個task,在task內(nèi)部開啟定時器,把當(dāng)前task對象存到session中,當(dāng)用戶拖動時,新啟動一個task,關(guān)閉上一個task。
@zyxjason
根據(jù)你說的我說下我的一點思路:
1、老師端存儲可以按照key/value進(jìn)行存儲。其中key為當(dāng)前秒,value為txt內(nèi)容。存放在mongodb
2、學(xué)生端根據(jù)每個視頻的時間戳能取到,然后再去關(guān)聯(lián)mongodb的數(shù)據(jù)。具體怎么實現(xiàn)可以
2.1 可以定時發(fā)一大段數(shù)據(jù),前端先包起來,然后再使用。
2.2 可以通過websocket來實現(xiàn)。