作者defsrisars (阿轉)
看板Web_Design
標題[問題] 關於聊天室的設計
時間Fri Jul 29 06:14:00 2016
不好意思
我是剛學網站的初學者
目前使用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://webptt.com/m.aspx?n=bbs/Web_Design/M.1469744042.A.3DC.html
1F:推 lovero32000: Infinite Scroll07/29 07:06
2F:→ lovero32000: 第二個請其他強者回答07/29 07:07
3F:推 zoko741235: 1-2 原生js有個api 是可以指定插入位置的07/29 07:34
4F:→ zoko741235: 1-1 從sql 以時間或id降冪排序 然後撈最前面50筆07/29 07:36
6F:→ zoko741235: lement/insertAdjacentHTML07/29 07:39
7F:→ Kenqr: jQuery有個prepend可以插在前面07/29 09:43
8F:→ darkswallow: parentNode.insertBefore( newNode, refNode );07/29 11:00
9F:→ darkswallow: 可以把newNode加在refNode之前,需要指明parentNode07/29 11:02
謝謝大家
努力一個早上我已經可以順利的從db抓最新的30筆資料了
然後經過測試也已經可以順利的往上加入資料並以正確的方式排序
雖然還沒完全做好
但還是非常謝謝大家
※ 編輯: defsrisars (140.134.18.55), 07/29/2016 11:48:58
※ 編輯: defsrisars (140.134.18.55), 07/29/2016 11:54:04
10F:推 steven11329: 雖然我對sql不太熟但是你如果msg有date欄位應該可以07/29 12:01
11F:→ steven11329: 直接設定where date>xxx07/29 12:01
※ 編輯: 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
12F:→ steven11329: 抓完最新30筆後,就有最新的第30筆的date,再找比這07/29 12:21
13F:→ steven11329: date的date就可以繼續往下抓了07/29 12:21
14F:→ steven11329: 比這date大的date07/29 12:22
了解,非常謝謝大大的解釋,我大概知道要怎麼做了
15F:推 zoko741235: 也可以用limit07/29 12:32
我說錯了 我用的是沒有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
16F:→ ssccg: MSSQL有top啊07/29 18:25
我有用到唷~不過感覺還是limit更方便一點
17F:推 gopupkimo: 如果你的訊息有id而且是primary key,其實用id去排序07/29 22:21
18F:→ gopupkimo: 跟比較大小,應該會比用日期好07/29 22:22
我後來也是這樣做的Q
因為我試過diff跟datecompare都還是不能用日期比大小
跟SQL其實很不熟,只會用些最基本的,研究很久都還是fail
所以最後我還是直接用uid去比大小
19F:推 gopupkimo: 影片的話你可能可以考慮一下vimeo,看過蠻多網站在用,07/29 22:42
20F:→ gopupkimo: 他有免費試用方案,api看起來也蠻方便的07/29 22:43
謝謝大大!! 我再去google研究看看這個東西
※ 編輯: defsrisars (1.165.43.67), 07/30/2016 01:27:42
※ 編輯: defsrisars (1.165.43.67), 07/30/2016 01:29:01
21F:→ et69523820: 建議歷史訊息 不要讀資料庫比較好 聊天室是即時互動 08/02 01:22
22F:→ et69523820: 等到聊天室人數越來越多 資料庫負擔會很重 08/02 01:22
23F:→ et69523820: 建議把資料庫當作輔助就好 把重點放在緩存資料 08/02 01:23
24F:→ et69523820: 歷史訊息 累積速度是非常快 08/02 01:28