所以我實現了一個聊天室。我將從我使用的模式開始。幾秒鐘後重新加載聊天的另一種方式
- 我有一個
room
表,基本上存儲與像參與者的數量,話題等等等等 - 我有一個
users
表,用於存儲用戶信息的聊天室的信息。 - 我有一個
posts
表存儲帖子。這有一個來自用戶和房間表的外鍵。 - 另外,我有一個決賽桌是用戶和房間之間的關係。所以它只是來自作爲房間一部分的用戶的房間和用戶標識。
現在,我在頁面上有三個div,一個用於chatarea,另一個用於顯示在線人羣,然後是用於發佈消息的文本區域。
我在做什麼目前,有一個JavaScript函數loadChats()
,現在這個方法調用一個PHP文件,該文件只是獲取在那個特定的房間裏所有的職位至今。同樣的東西也倒入了我的div中,即「聊天室」。 此外,同樣,我有一個loadParticipants()
每秒鐘加載用戶。
我正在使用jquery.post的目的和在該方法的結尾,我做了一個setTimeout
在函數的結尾。現在這裏是我的問題
當然我可以做得更好。有什麼建議麼?我想到了幾個。
- 每次調用PHP中,我得到了整個chathistory併發送回瀏覽器着,當然我可以檢查郵件的數量是一樣的,因爲它是在客戶端,如果是的話,我不會發送消息。但是它會使它更好嗎?怎麼樣?
- 另外,每隔一秒呼叫一次服務器端似乎有點太過於矯枉過正。有沒有辦法做到這一點,如果一些新的聊天被添加到
posts
表中,那麼通知和更新該特定聊天室?即不是經常ping服務器來請求新的請求,只需要詢問一次,並等待是否有新的請求。當該請求完成時,它會再次ping服務器以進行下一次更新。
一個建議:不要取得房間裏的所有帖子,只取得新的帖子(例如按照最後帖子的ID進行檢查)並將它們附加到聊天框中。 –
只需爲每個帖子添加一個標誌字段即可讀/不可....如果讀取設置爲1,否則爲0 ....則只能獲取標誌爲1的帖子...... –