[問題] 關於聊天室的設計

作者: defsrisars (阿轉)   2016-07-29 06:14:00
不好意思
我是剛學網站的初學者
目前使用php+ajax+websocket+mysql實作一個簡單的聊天室
並且可以上傳圖片
在php、ajax和貴版A了很多關鍵字都沒有看到我想問的問題
所以發文問問看
如果問題很笨請多包涵Q
1.往上拉讀取更舊的訊息
我的聊天室是一對一像FB那樣的
所以每次打開來會去db抓歷史訊息
但是現在是全抓
所以訊息量一大,滾輪抓出來就直接很大一串
如果又曾經上傳很多圖片更會影響讀取速度
所以想做像fb那樣只會先抓最新的50筆(maybe=50)資料
然後往上拉到底就會像FB那樣ajax去抓新的資料
請問這種作法有什麼關鍵字可以google嗎?
我google很多關鍵字都找不到QQ
自己直接做因為是初學者,我目前想到的流程大概是
1. db抓歷史訊息從全抓改成最新50筆
2.js偵測聊天室div的捲軸高度=0時ajax到php往上再抓db資料
(不過這邊不知道要怎麼讓新抓的訊息以正確的方式出現在現有訊息的上面)
原本都是用jQuery selector.append到聊天室的div就直接會很單純的在下面出現
2.上傳影片
因為還想做上傳影片,但是影片資料通常都很大(可能動輒幾百MB)
所以想請問有可能上傳影片到別人家的主機嗎?
然後再想辦法嵌入進來
好比說Youtube data API是不是可以做到這樣的功能呢?
但是聽說Youtube API限制很多,請問還有什麼類似功能的推薦的可以使用嗎?
目前想到的問題大概是這樣
謝謝大家QQ
作者: lovero32000 (樂芙RO三萬二)   2016-07-29 07:06:00
Infinite Scroll第二個請其他強者回答
作者: zoko741235 (台北金城武)   2016-07-29 07:34:00
1-2 原生js有個api 是可以指定插入位置的1-1 從sql 以時間或id降冪排序 然後撈最前面50筆https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentHTML
作者: Kenqr (function(){})()   2016-07-29 09:43:00
jQuery有個prepend可以插在前面
作者: darkswallow   2016-07-29 11:00:00
parentNode.insertBefore( newNode, refNode );可以把newNode加在refNode之前,需要指明parentNode
作者: steven11329 (清新柳橙)   2016-07-29 12:01:00
雖然我對sql不太熟但是你如果msg有date欄位應該可以直接設定where date>xxx抓完最新30筆後,就有最新的第30筆的date,再找比這date的date就可以繼續往下抓了比這date大的date
作者: zoko741235 (台北金城武)   2016-07-29 12:32:00
也可以用limit
作者: ssccg (23)   2016-07-29 18:25:00
MSSQL有top啊
作者: gopupkimo (BUG)   2016-07-29 22:21:00
如果你的訊息有id而且是primary key,其實用id去排序跟比較大小,應該會比用日期好影片的話你可能可以考慮一下vimeo,看過蠻多網站在用,他有免費試用方案,api看起來也蠻方便的
作者: et69523820 (小豬)   2016-08-02 01:22:00
建議歷史訊息 不要讀資料庫比較好 聊天室是即時互動等到聊天室人數越來越多 資料庫負擔會很重建議把資料庫當作輔助就好 把重點放在緩存資料歷史訊息 累積速度是非常快

Links booklink

Contact Us: admin [ a t ] ucptt.com