首頁  >  問答  >  主體

java - 即時通訊系統和push推送系統都是怎麼實現的啊?

一則訊息 如何透過伺服器中轉達到 指定的另一端的

方便的話 貼一段典型的程式碼

另外session儲存的時候 都儲存什麼資訊啊

PHP中文网PHP中文网2686 天前851

全部回覆(6)我來回復

  • 黄舟

    黄舟2017-06-12 09:29:28

    我的理解:
    客戶端每間隔一段時間(例如一秒)向伺服器進行一次請求(發送request)。
    如果服務端存在訊息則在回應(response)中標記訊息,通知客戶端伺服器端有新訊息。
    客戶端向服務端發送請求拉去訊息,服務端回應。

    request:有新消息嗎?收到請回答。
    response:沒有。
    request:有新消息嗎?收到請回答。
    response:沒有。
    request:有新消息嗎?收到請回答。
    response:有,訊息id是123456。
    request:請發送訊息id是123456的訊息內容。
    response:訊息id:123456,訊息正文:驚!這個女人竟然在13億人面前做這種事……。

    回覆
    0
  • 迷茫

    迷茫2017-06-12 09:29:28

    訊息傳達是透過客戶端刷新向服務端獲得訊息的而不是服務端直接向客戶端發送

    以前確實有一些是直接在本地開埠由伺服器直接請求客戶端的,但現在用於訊息推送已經不多見了(通常用於區域網路內傳輸檔案或資訊)

    session儲存在伺服器,本地透過 Cookies 儲存 SESSION 的 name 和 id,伺服器透過這兩個而取得伺服器端儲存的內容

    回覆
    0
  • 滿天的星座

    滿天的星座2017-06-12 09:29:28

    目前常見的是兩種方案。
    1、客戶端主動輪詢(也就是每隔N時間向服務端詢問有沒有訊息。
    2、服務端主動推送。後端服務之間用socket,與前端通訊的話可以用websocket。

    回覆
    0
  • 女神的闺蜜爱上我

    女神的闺蜜爱上我2017-06-12 09:29:28

    http2.0 可以很好的處理,可以試試啊~

    回覆
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-06-12 09:29:28

    都說是即時性的了,肯定要建立長連結這種了。比如socket。

    回覆
    0
  • 给我你的怀抱

    给我你的怀抱2017-06-12 09:29:28

    如果只是屬於產品的眾多功能之一,即時通信推薦題主對接IM,既可以節約一大筆開發支出,現有的IM提供商附帶的功能又比較全面,比自己開發要划算的多,題主可以看一下環信http://www.easemob.com/

    回覆
    0
  • 取消回覆