搜尋

首頁  >  問答  >  主體

javascript - 問一個在web頁面做一個即時通訊功能的問題? ?

問題:就是在網站的首頁做一個類似QQ聊天介面的功能,不用很複雜,只要顯示使用者頭像和發送的內容就行,也不用做聊天的記錄。只要即時顯示最新的20筆記錄即可?

#個人想法:由於功能比較單一,不是很複雜,而且顯示的內容只需要最新的20條,所以我打算用,AJAX輪詢的方法去做,當用戶輸入聊天記錄後,把記錄存入資料庫(AJAX輪詢即時讀取資料庫資料),然後取得資料後,顯示在頁面上。請問這麼做可以嗎?這樣做,多個人聊天時會不會出現什麼問題呢?例如數據顯示在頁面上時會很慢什麼的?

websoket可以用來做這個,但是沒用過,也不知道可不可以在windows伺服器上使用(專案部署在windows上的)。

問題來了:請問各位有沒有什麼好的簡單的方法呢?給點意見唄! ! ! !

typechotypecho2734 天前717

全部回覆(2)我來回復

  • 为情所困

    为情所困2017-06-28 09:24:36

    websocketsocket.io就可以實現了, 這個和操作平台關係不是很大, 和你實現的web服務程序關係比較大, 因為你得選擇一個web程序支持websocketsocket .io. 我之前用node.js`實現過, 也是參考網上的例子, 你也可以參考下
    Node.js + Web Socket 打造即時聊天程式嗨聊

    回覆
    0
  • 高洛峰

    高洛峰2017-06-28 09:24:36

    AJAX輪詢的話,多人聊天時候,每個終端都得不斷去請求資料庫數據,有以下幾個缺點:

    1. 由於請求次數比較多,會增加伺服器的壓力。

    2. AJAX輪詢本身比較慢

    3. 由於瀏覽器對於同一個網域下的AJAX請求數量有限制,所以資料互動的效率還是挺低的。

    如果用WebSocket的話,我建議用nodeJSws做一個廣播服務,可以掛起在Windows後台,也可以隨意移植,相當方便,用到的庫是這個:https://www.npmjs .com/package/ws
    不得不說,NodeJS寫的東西無論的可移植性、擴展性還是兼容性都是挺不錯的。

    具體操作就不說了,可以參考ws包的broadcase example範例來寫。

    回覆
    0
  • 取消回覆