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

看板Web_Design作者 (阿轉)時間7年前 (2016/07/29 06:14), 7年前編輯推噓7(7017)
留言24則, 8人參與, 最新討論串1/1
不好意思 我是剛學網站的初學者 目前使用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 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.165.43.67 ※ 文章網址: https://www.ptt.cc/bbs/Web_Design/M.1469744042.A.3DC.html

07/29 07:06, , 1F
Infinite Scroll
07/29 07:06, 1F

07/29 07:07, , 2F
第二個請其他強者回答
07/29 07:07, 2F

07/29 07:34, , 3F
1-2 原生js有個api 是可以指定插入位置的
07/29 07:34, 3F

07/29 07:36, , 4F
1-1 從sql 以時間或id降冪排序 然後撈最前面50筆
07/29 07:36, 4F

07/29 07:39, , 6F
lement/insertAdjacentHTML
07/29 07:39, 6F

07/29 09:43, , 7F
jQuery有個prepend可以插在前面
07/29 09:43, 7F

07/29 11:00, , 8F
parentNode.insertBefore( newNode, refNode );
07/29 11:00, 8F

07/29 11:02, , 9F
可以把newNode加在refNode之前,需要指明parentNode
07/29 11:02, 9F
謝謝大家 努力一個早上我已經可以順利的從db抓最新的30筆資料了 然後經過測試也已經可以順利的往上加入資料並以正確的方式排序 雖然還沒完全做好 但還是非常謝謝大家 ※ 編輯: defsrisars (140.134.18.55), 07/29/2016 11:48:58 ※ 編輯: defsrisars (140.134.18.55), 07/29/2016 11:54:04

07/29 12:01, , 10F
雖然我對sql不太熟但是你如果msg有date欄位應該可以
07/29 12:01, 10F

07/29 12:01, , 11F
直接設定where date>xxx
07/29 12:01, 11F
※ 編輯: defsrisars (111.82.229.8), 07/29/2016 12:07:24 ※ 編輯: defsrisars (111.82.229.8), 07/29/2016 12:08:05 我的有date 請問是用date去紀錄目前抓到哪裡嗎? ※ 編輯: defsrisars (111.82.229.8), 07/29/2016 12:08:55

07/29 12:21, , 12F
抓完最新30筆後,就有最新的第30筆的date,再找比這
07/29 12:21, 12F

07/29 12:21, , 13F
date的date就可以繼續往下抓了
07/29 12:21, 13F

07/29 12:22, , 14F
比這date大的date
07/29 12:22, 14F
了解,非常謝謝大大的解釋,我大概知道要怎麼做了

07/29 12:32, , 15F
也可以用limit
07/29 12:32, 15F
我說錯了 我用的是沒有limit的MSSQL QAQ 不過還是非常謝謝大大~~~ ※ 編輯: defsrisars (61.226.118.124), 07/29/2016 12:49:56 第一個順利做出來了 謝謝大家~ ※ 編輯: defsrisars (140.134.18.54), 07/29/2016 18:09:50

07/29 18:25, , 16F
MSSQL有top啊
07/29 18:25, 16F
我有用到唷~不過感覺還是limit更方便一點

07/29 22:21, , 17F
如果你的訊息有id而且是primary key,其實用id去排序
07/29 22:21, 17F

07/29 22:22, , 18F
跟比較大小,應該會比用日期好
07/29 22:22, 18F
我後來也是這樣做的Q 因為我試過diff跟datecompare都還是不能用日期比大小 跟SQL其實很不熟,只會用些最基本的,研究很久都還是fail 所以最後我還是直接用uid去比大小

07/29 22:42, , 19F
影片的話你可能可以考慮一下vimeo,看過蠻多網站在用,
07/29 22:42, 19F

07/29 22:43, , 20F
他有免費試用方案,api看起來也蠻方便的
07/29 22:43, 20F
謝謝大大!! 我再去google研究看看這個東西 ※ 編輯: defsrisars (1.165.43.67), 07/30/2016 01:27:42 ※ 編輯: defsrisars (1.165.43.67), 07/30/2016 01:29:01

08/02 01:22, , 21F
建議歷史訊息 不要讀資料庫比較好 聊天室是即時互動
08/02 01:22, 21F

08/02 01:22, , 22F
等到聊天室人數越來越多 資料庫負擔會很重
08/02 01:22, 22F

08/02 01:23, , 23F
建議把資料庫當作輔助就好 把重點放在緩存資料
08/02 01:23, 23F

08/02 01:28, , 24F
歷史訊息 累積速度是非常快
08/02 01:28, 24F
文章代碼(AID): #1NceEgFS (Web_Design)