婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 基于PHP實現一個簡單的在線聊天功能

基于PHP實現一個簡單的在線聊天功能

熱門標簽:釘釘打卡地圖標注 新河科技智能外呼系統怎么樣 衡水外呼系統平臺 安裝電銷外呼系統 地圖標注平臺怎么給錢注冊 福州人工外呼系統哪家強 注冊400電話申請 常州地圖標注服務商 百度商鋪地圖標注

要實現功能,首先要做前端,經過對比其他網站的在線聊天功能,發現除了基本的聊天功能以外,還要注意以下幾點.

  1. 一次只能和一個人聊天,但是可以隨意切換其他人.
  2. 如果用戶是從"發送消息" 入口進來的,那么當前馬上就切換到對應的聊天窗口,而且如果之前有過聊天記錄,應該把聊天記錄也展示出來.
  3. 如果是從"我的消息" 入口進來的,那么應該不顯示任何聊天記錄.等待選擇聊天對象.
  4. "我"發送的消息顯示在右邊,"對方"發送的消息顯示在左邊,也可以相反,總之要不一樣.
  5. 切換聊天的時候不能刷新整個頁面,否則體驗很差. 發送消息也同理,所以應該用ajax
  6. 要保證在線聊天的及時性,應該每隔一段很短的時間,就要與服務端通信,也就是說要輪詢ajax.

前端頁面

經過簡單的需求分析,然后又找了找其他的網站,對比了一下功能在界面的展示,最終確定界面. 然后花了幾個小時做好了.

成品

這是最終全部做完(包括后端) 的效果.

點擊左側可以切換,下方多行文本框,輸入聊天信息,然后點擊發送.

整個流程大概就是這樣.

數據庫

回頭來看需求, 很明顯,首先要有一張表格,存放雙方的對話,想了想決定這樣定義字段:

 主要是這兩個字段:
user_id 表示消息發送的主體
chat_user 表示消息接收的主題

這樣定義的好處是,可以輕易從一條消息中輕易辨別哪個是發送方,哪個是接收方,為前端的展示做準備.

但是這樣還不夠

有了這張表,就可以通過當前登錄的session中的用戶ID, 去進行查詢,可以得知在跟哪些人聊天. 但是這樣并不方便,而且要進行復雜的處理.

  1. 假設有一條消息是己方發送的,那么就插入數據 ‘己方' ‘對方' ‘內容',同時可以知道當前聊天中的一個人是'對方'.
  2. 但是假設有一條消息是對方發送的,對當前用戶來說,數據就是 ‘對方' ‘己方' ‘內容'.

也就是說,想要實現多人聊天,就要獲取當前正在跟 ‘我' 聊天的用戶們.不論是對方發送的,還是 ‘我' 發送的,都應該計算在內. 要對數據庫遍歷兩次,而且很多對當前來說是重復,無用的數據. 在”獲取聊天對方的主體” 這一步時, 只需要知道兩個人是否有聊天關系即可,具體內容不用關心.

所以還要一張聊天關系表. 我是這樣定義字段的:

其中user_id 和 chat_user 為雙主鍵,不能同時相等. 這樣就只記錄了聊天關系,不記錄聊天內容,搜索起來也方便得多.
‘我' 是user_id ‘對方' 是chat_user

舉個例子 第一個字段表示 我與ID為9的用戶 有一個聊天關系, 所以在'我'的界面上,就應該有這個用戶. 同理 第二條字段表示 對方與我有聊天關系,那么在對方的界面上,就要有我這個用戶.

一般來說聊天關系是相互的, 但是也可以刪除. 刪除聊天關系并不等于刪除聊天記錄.
比如,在我的界面上,我把與9號用戶的聊天關系刪除了,那么我就看不到與9號用戶的聊天信息了, 但是對9號用戶來說,我還在他的界面上,隨時可以向我發送消息. 當他向我發送消息時,服務端又要生成一條數據 ‘我' ‘對方' ,這樣,我與對方的聊天關系又建立起來了,同時,聊天記錄一直都沒有被刪除過,所以,當重新建立聊天關系時,可以展示出聊天記錄.

而且,刪除聊天關系后, 我也可以重新發起聊天, 再次建立聊天關系.
所以這張表建立之后提供很多方便, 上面分析的需求,展示聊天記錄,也可以很好的完成.

實現思路

首先,主要功能有一個控制器,兩張表,兩個模型. 至于頭像,昵稱什么的,不計算在主要功能內.

控制器MessageController 一共有五個方法.

1.showPage()

用來應對非ajax請求,用戶通過瀏覽器訪問時,比如第一次進入聊天界面,就是通過瀏覽器訪問的,這時候調用showPage方法,這時候,后臺只獲取聊天關系(第四個方法),展示在界面左側. 其他不作處理.

2.newChat()

用來應對非ajax請求, 比如我通過用戶個人資料頁面,點擊發送消息,這時候就調用這個方法. 先判斷聊天關系是否存在,如果存在就不處理,如果不存在,就插入一個聊天關系. 并且要獲取所有聊天關系(第四個方法),最新的排上面,把用戶ID轉到界面上.為后面做準備.

3.getChatText()

用來應對ajax請求. 用來獲取聊天信息.
‘我' 這個用戶來到聊天界面上后, 前端就開始進行ajax輪詢.不停訪問getChatText()這個方法. 這時有兩種情況.

  1. 當前正在與某個用戶聊天,js就發送一個請求到getChatText方法,參數是對方的用戶ID. 因為'我'的ID 可以從服務端session獲取到.然后通過這兩個信息去數據庫獲取聊天消息.返回json格式,js進行數據處理,節點操作,等等,然后把消息展示出來.
  2. 當前沒有正在與某個用戶聊天,那ajax暫不啟動,當選擇了聊天對象的時候再啟動輪詢.

4.getChatTemp()

獲取當前登錄用戶的聊天關系. 作為一個工具函數,供第一個和第二個函數使用.

5.pushChat()

用來應對ajax請求, 也就是發送消息請求. 把聊天消息插入數據庫而已.

總結

實現了在線聊天的基本功能,但是有缺陷, 獲取聊天消息的時候,我是無論有沒有新消息,都全部獲取到. 然后清空聊天框,再填充.
這樣的結果是, 當聊天信息很多的時候,滾動條會有問題, 每次發送消息,滾動條都會先滾動到最上面,再滾動下來. 有個解決方案是,在聊天關系上加一個字段,存儲兩個人的消息數. 獲取完數據的時候,先統計一下,看看是不是比原來的多了,如果多了,就只獲取多的數據,然后更新消息數目. 如果沒多,那就舍棄數據,不做處理.

以上就是基于PHP實現一個簡單的在線聊天功能的詳細內容,更多關于PHP在線聊天的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • PHP框架實現WebSocket在線聊天通訊系統
  • ThinkPHP5.0框架結合Swoole開發實現WebSocket在線聊天案例詳解
  • Ajax PHP JavaScript MySQL實現簡易無刷新在線聊天室
  • PHP+swoole實現簡單多人在線聊天群發
  • 基于javascript、ajax、memcache和PHP實現的簡易在線聊天室
  • PHP聊天室簡單實現方法詳解
  • 基于Swoole實現PHP與websocket聊天室
  • 值得分享的php+ajax實時聊天室
  • 簡單的php+mysql聊天室實現方法(附源碼)
  • php實現簡易聊天室應用代碼
  • php+html5基于websocket實現聊天室的方法

標簽:鷹潭 克拉瑪依 白城 遼陽 六安 鶴崗 柳州 唐山

巨人網絡通訊聲明:本文標題《基于PHP實現一個簡單的在線聊天功能》,本文關鍵詞  基于,PHP,實現,一個,簡單,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《基于PHP實現一個簡單的在線聊天功能》相關的同類信息!
  • 本頁收集關于基于PHP實現一個簡單的在線聊天功能的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产精品一区二区你懂的| 久久99深爱久久99精品| 成人午夜免费视频| 一区二区免费在线| 精品国产亚洲在线| 日韩欧美成人一区| 91黄色激情网站| 国产一区二区精品久久99| 国产精品亲子伦对白| 亚洲精品国产a| 国产在线视频一区二区三区| 国产三级精品在线| 99久久免费视频.com| 亚洲欧美在线视频| 91精品免费在线| 精品一二三四区| 亚洲一区二区三区中文字幕在线| 日韩精品一区二区三区在线观看 | 91香蕉视频在线| 久久蜜臀中文字幕| 91精品综合久久久久久| 国产精品久久久久9999吃药| 欧美va日韩va| 久久久久久久久久久黄色| 69堂国产成人免费视频| 91黄色小视频| 色狠狠色狠狠综合| 日韩精品国产欧美| 国产精品久久久久久久久晋中| 色综合久久久久综合体桃花网| 免费不卡在线观看| 国产精品久久久久婷婷| 欧美精品vⅰdeose4hd| 成人av集中营| 不卡一区中文字幕| 久久成人久久鬼色| 美女视频一区二区三区| 图片区小说区国产精品视频| 国产精品网站在线| 国产精品美女久久久久久久网站| 欧美精品一区在线观看| 日韩女优av电影| 国产亲近乱来精品视频| 欧美高清在线视频| 最新热久久免费视频| 亚洲国产精品久久人人爱蜜臀| 亚洲乱码国产乱码精品精的特点 | 成人黄色在线看| 久久精品国产99国产精品| 免费欧美日韩国产三级电影| 青青草一区二区三区| 国产一区中文字幕| 成人av网站在线观看免费| 色婷婷综合久久久中文字幕| 91久久精品国产91性色tv| 欧美精品成人一区二区三区四区| 欧美一级夜夜爽| 国产精品午夜春色av| 日韩中文字幕区一区有砖一区 | 一本大道久久a久久综合婷婷| 在线观看免费亚洲| 久久综合狠狠综合久久综合88| 国产午夜精品一区二区三区视频| 久久午夜电影网| 亚洲国产欧美在线人成| 国产99久久久国产精品免费看 | 久久看人人爽人人| 日韩精品午夜视频| zzijzzij亚洲日本少妇熟睡| 日韩欧美高清一区| 亚洲电影激情视频网站| 91伊人久久大香线蕉| 国产精品国产自产拍高清av| 激情av综合网| 久久九九影视网| 国产成人av电影在线播放| 欧美精品一区二区三区蜜臀| 美女一区二区三区在线观看| 在线播放中文字幕一区| 亚洲一区二区三区不卡国产欧美| 精品综合久久久久久8888| 日韩一区二区三区四区| 日韩成人av影视| 欧美一区二区三区视频| 久久成人久久鬼色| 国产日产精品1区| 99精品视频一区二区三区| 国产精品不卡在线| 欧美在线高清视频| 日本欧美在线观看| 久久色.com| 91久久精品国产91性色tv| 亚洲小少妇裸体bbw| 精品国产区一区| 色综合天天综合狠狠| 亚洲成av人片观看| 久久久国产精品午夜一区ai换脸| 国产成人午夜精品5599| 国产欧美精品国产国产专区 | 精品一区二区三区在线播放视频| 91久久精品午夜一区二区| 久久精品国内一区二区三区| 中文字幕制服丝袜一区二区三区| 国产精品一区二区免费不卡 | 久久久久久久久久久电影| 成人av在线电影| 激情久久五月天| 极品少妇xxxx精品少妇| 久久久夜色精品亚洲| 亚洲成人第一页| 久久精品国产久精国产| 美女在线观看视频一区二区| 色999日韩国产欧美一区二区| 欧美日韩在线一区二区| 91亚洲精品久久久蜜桃网站 | 欧美福利视频导航| 99视频超级精品| 毛片不卡一区二区| 91啪九色porn原创视频在线观看| 99久久夜色精品国产网站| 欧美一区二区高清| 美女www一区二区| 久久综合久久综合亚洲| 精品影视av免费| 日韩免费观看高清完整版 | 国产精品美女视频| 亚洲伦在线观看| 国产福利不卡视频| 国产精品免费av| 国产盗摄精品一区二区三区在线| 91蝌蚪porny| 日韩欧美久久久| 蜜桃在线一区二区三区| 欧美婷婷六月丁香综合色| 亚洲天堂久久久久久久| 在线观看日韩精品| 欧美影院精品一区| 亚洲国产人成综合网站| 欧美疯狂性受xxxxx喷水图片| 国产精品美日韩| 成人高清在线视频| 精品精品国产高清a毛片牛牛| 国产精品一区二区在线观看网站| 国产精品网曝门| 一本大道av伊人久久综合| 美女在线视频一区| 精品一区二区日韩| 自拍偷拍国产精品| 亚洲精品一线二线三线无人区| 欧美一卡二卡三卡四卡| 日韩精品中文字幕在线不卡尤物 | 久久69国产一区二区蜜臀| 天天综合色天天综合色h| 国产综合久久久久影院| 成人avav影音| 精品国产一区二区三区忘忧草| 亚洲成人免费在线| 粉嫩高潮美女一区二区三区| 欧美亚洲综合另类| 一区二区三区小说| 99久久精品国产网站| 欧美xxxxx牲另类人与| 亚洲精品自拍动漫在线| 91蜜桃视频在线| 日韩专区一卡二卡| 国产欧美一区二区精品久导航 | 国产电影一区在线| 精品欧美黑人一区二区三区| 精品一区精品二区高清| 国产色综合久久| 欧美日韩免费一区二区三区 | 日韩av中文字幕一区二区| 精品国产一区a| 在线观看日韩高清av| 成人综合婷婷国产精品久久| 久久久精品国产免费观看同学| 欧美精品视频www在线观看| 欧美吞精做爰啪啪高潮| 欧美日韩视频不卡| 欧美美女一区二区| 欧美mv和日韩mv的网站| 精品国产成人系列| 日本免费新一区视频| 欧美大胆人体bbbb| 欧美人xxxx| 欧美午夜免费电影| 成人性生交大合| 91小视频免费看| 午夜欧美视频在线观看| 欧美日韩精品欧美日韩精品一| 日韩欧美精品三级| 国产ts人妖一区二区| 麻豆成人久久精品二区三区小说| 亚洲成人资源网| 成人综合婷婷国产精品久久蜜臀| av网站一区二区三区| 久久99精品久久久久婷婷| 国产jizzjizz一区二区| 中文字幕一区二区三区在线播放| 51午夜精品国产|