本發明涉及通信技術領域,具體而言,涉及一種即時通信方法及裝置,還涉及一種服務器。
背景技術:
在當今移動互聯網時代,智能手機普及率日趨提升,逐步改變著人們的生活,然而手機作為輸入設備也存在一定的缺陷,尤其是載體較小,不便于用戶輸入大量文字。通常的即時通信產品,大都只提供移動端系統,用戶只能在移動端使用。對于協同辦公,由于其用戶群體大都是工作用戶,其使用移動端及pc端的用戶占比都比較大,只移動端這一單一的方式,矛盾日趨突顯,不再滿足使用需求。
因此,如何提供一種即時通信產品,方便用戶輸入并能夠滿足移動端與web端消息互通,成為目前亟待解決的問題。
技術實現要素:
本發明旨在至少解決現有技術或相關技術中存在的技術問題之一。
為此,本發明的一個目的在于提出了一種即時通信方法。
本發明的另一個目的在于提出了一種即時通信裝置。
本發明的又一個目的在于提出了一種服務器。
有鑒于此,本發明提出了一種即時通信方法,用于服務器,即時通信方法包括:采用非阻塞式io線程與發送端建立連接;接收并保存發送端的消息信息及連接信息;根據消息信息確認接收端,并將消息內容發送至接收端。
根據本發明的即時通信方法,由于每臺服務器需要接受海量的用戶連接,同時會有較大的并發請求,通過采用非阻塞式io線程與發送端建立連接,只需要一個線程即可接受所有通道連接,而每個連接對應的業務處理,由后續的處理線程來執行;每個發送端連接登錄成功后,由服務器保存發送端的消息信息及連接信息;根據消息信息確認接收端,將消息內容推送至接收端。通過本發明的技術方案,大大節約了系統資源,增加消息的到達率及可靠性,并實現移動終端與web終端消息互通,從而滿足協同工作的需求,提升辦公效率和管理手段。
另外,根據本發明上述的即時通信方法,還可以具有如下附加的技術特征:
在上述技術方案中,優選地,保存發送端的消息信息及連接信息,具體包括:將消息信息保存至緩存數據庫中;判斷發送端的類型,根據發送端的類型保存發送端的連接信息;當發送端為移動終端時,將移動端的連接信息保存至第一內存中;當發送端為web終端時,將web端的連接信息保存至第二內存中。
在該技術方案中,通過將消息信息保存至緩存數據庫中,可以依據實際情況對緩存內的消息信息進行定期清理,進一步節約系統資源,減輕系統的運行負擔;通過將移動端的連接信息保存至第一內存中,將web端的連接信息保存至第二內存中,在將消息內容推送至接收端時,縮小接收端地址信息的查找范圍,從而高效、快捷的推送消息內容至接收端,增加消息的到達率及可靠性。
在上述技術方案中,優選地,根據消息信息確認接收端,并將消息內容發送至接收端,具體包括:判斷發送端的類型與接收端的類型是否一致;當判斷結果為是時,直接將消息內容發送至接收端;當判斷結果為否時,將消息內容進行格式轉換,并將轉換后的消息內容發送至接收端。
在該技術方案中,通過判斷發送端與接收端的類型是否一致,當判斷結果一致時,說明實現的是移動端與移動端或web端與web端直接的單一通信,此時直接將消息內容發送至接收端即可,無需對消息內容進行格式上的轉換;判斷結果不一致時,說明實現的是移動端與web端之間的消息互通,此時需要將發送端發送的消息內容進行格式轉換,以適應接收端的內容格式協議。從而實現移動端的消息推送、web端的消息推送及移動端與web端之間的消息互通。
在上述技術方案中,優選地,將消息內容進行格式轉換,具體包括:將json協議與自定義二進制協議相互轉換。
在該技術方案中,移動端所推送的消息內容自定義了二進制協議,由于傳統的即時通信系統大都采用xmpp協議,該協議為xml結構,其內容大都通過節點描述信息,整體協議60%為無用內容,導致移動互聯網環境下,比較消耗用戶的電量及流量,而自定義二進制協議,由于協議內容較小,且長度固定,減少了數據的冗余、傳輸速率得到了提高,相應的安全性也得到了加強;同時web端為了兼容不同廠商的瀏覽器,所推送的消息內容采用的協議是json格式,從而便于游覽器的解析及擴展;通過將web端采用json協議定義的消息內容與移動端采用自定義二進制協議定義的消息內容相互轉換,從而完成移動端與web端的即時通信。
在上述技術方案中,優選地,連接信息包括以下至少任一項或其組合:發送端的ip、端口信息;消息信息包括以下至少任一項或其組合:消息內容、接收端的ip。
在該技術方案中,根據消息信息從相應的緩存中獲取到接收端的ip,在相應的內存中查找到與該ip對應的端口信息,進而完成消息內容的推送。本領域技術人員應該理解,發送端和接收端同為客戶端,發送端與接收端是相對的;另外,連接信息包括發送端的ip、端口信息,但不限于此;消息信息包括消息內容、接收端的ip,但不限于此。
本發明還提出一種即時通信裝置,用于服務器,即時通信裝置包括:連接單元,用于采用非阻塞式io線程與發送端建立連接;存儲單元,用于接收并保存發送端的消息信息及連接信息;發送單元,用于根據消息信息確認接收端,并將消息內容發送至接收端。
根據本發明的即時通信裝置,由于每臺服務器需要接受海量的用戶連接,同時會有較大的并發請求,通過采用非阻塞式io線程與發送端建立連接,只需要一個線程即可接受所有通道連接,而每個連接對應的業務處理,由后續的處理線程來執行;每個發送端連接登錄成功后,由服務器保存發送端的消息信息及連接信息;根據消息信息確認接收端,將消息內容推送至接收端。通過本發明的技術方案,大大節約了系統資源,增加消息的到達率及可靠性,并實現移動終端與web終端消息互通,從而滿足協同工作的需求,提升辦公效率和管理手段。
另外,根據本發明上述的即時通信裝置,還可以具有如下附加的技術特征:
在上述技術方案中,優選地,存儲單元,具體包括:緩存單元,用于將消息信息保存至緩存數據庫中;第一判斷單元,用于判斷發送端的類型,根據發送端的類型保存發送端的連接信息;內存單元,用于當發送端為移動終端時,將移動端的連接信息保存至第一內存中;當發送端為web終端時,將web端的連接信息保存至第二內存中。
在該技術方案中,通過將消息信息保存至緩存數據庫中,可以依據實際情況對緩存內的消息信息進行定期清理,進一步節約系統資源,減輕系統的運行負擔;通過將移動端的連接信息保存至第一內存中,將web端的連接信息保存至第二內存中,在將消息內容推送至接收端時,縮小接收端地址信息的查找范圍,從而高效、快捷的推送消息內容至接收端,增加消息的到達率及可靠性。
在上述技術方案中,優選地,發送單元,具體包括:第二判斷單元,用于判斷發送端的類型與接收端的類型是否一致;直接發送單元,用于當判斷結果為是時,直接將消息內容發送至接收端;格式轉換單元,用于當判斷結果為否時,將消息內容進行格式轉換,并將轉換后的消息內容發送至接收端。
在該技術方案中,通過判斷發送端與接收端的類型是否一致,當判斷結果一致時,說明實現的是移動端與移動端或web端與web端直接的單一通信,此時直接將消息內容發送至接收端即可,無需對消息內容進行格式上的轉換;判斷結果不一致時,說明實現的是移動端與web端之間的消息互通,此時需要將發送端發送的消息內容進行格式轉換,以適應接收端的內容格式協議。從而實現移動端的消息推送、web端的消息推送及移動端與web端之間的消息互通。
在上述技術方案中,優選地,格式轉換單元,具體用于:將json協議與自定義二進制協議相互轉換。
在該技術方案中,移動端所推送的消息內容自定義了二進制協議,由于傳統的即時通信系統大都采用xmpp協議,該協議為xml結構,其內容大都通過節點描述信息,整體協議60%為無用內容,導致移動互聯網環境下,比較消耗用戶的電量及流量,而自定義二進制協議,由于協議內容較小,且長度固定,減少了數據的冗余、傳輸速率得到了提高,相應的安全性也得到了加強;同時web端為了兼容不同廠商的瀏覽器,所推送的消息內容采用的協議是json格式,從而便于游覽器的解析及擴展;通過將web端采用json協議定義的消息內容與移動端采用自定義二進制協議定義的消息內容相互轉換,從而完成移動端與web端的即時通信。
在上述技術方案中,優選地,連接信息包括以下至少一項或其組合:發送端的ip、端口信息;消息信息包括以下至少任一項或其組合:消息內容、接收端的ip。
在該技術方案中,根據消息信息從相應的緩存中獲取到接收端的ip,在相應的內存中查找到與該ip對應的端口信息,進而完成消息內容的推送。本領域技術人員應該理解,發送端和接收端同為客戶端,發送端與接收端是相對的;另外,連接信息包括發送端的ip、端口信息,但不限于此;消息信息包括消息內容、接收端的ip,但不限于此。
本發明還提出一種服務器,包括上述任一技術方案中的即時通信裝置。該服務器具有與上述任一技術方案中的即時通信裝置相同的技術效果,在此不再贅述。
本發明的附加方面和優點將在下面的描述部分中變得明顯,或通過本發明的實踐了解到。
附圖說明
本發明的上述和/或附加的方面和優點從結合下面附圖對實施例的描述中將變得明顯和容易理解,其中:
圖1示出了根據本發明一實施例的即時通信方法的流程示意圖;
圖2示出了根據本發明再一實施例的即時通信方法的流程示意圖;
圖3示出了根據本發明又一實施例的即時通信方法的流程示意圖;
圖4示出了根據本發明一實施例的即時通信裝置的示意框圖;
圖5示出了根據本發明再一實施例的即時通信裝置的示意框圖;
圖6示出了根據本發明又一實施例的即時通信裝置的示意框圖;
圖7示出了根據本發明一實施例的服務器的示意框圖;
圖8示出了根據本發明一具體實施例的非阻塞式io線程的示意圖;
圖9示出了根據本發明一具體實施例的websocket協議的示意圖。
具體實施方式
為了能夠更清楚地理解本發明的上述目的、特征和優點,下面結合附圖和具體實施方式對本發明進行進一步的詳細描述。需要說明的是,在不沖突的情況下,本申請的實施例及實施例中的特征可以相互組合。
在下面的描述中闡述了很多具體細節以便于充分理解本發明,但是,本發明還可以采用其他不同于在此描述的其他方式來實施,因此,本發明的保護范圍并不受下面公開的具體實施例的限制。
如圖1所示,根據本發明一實施例的即時通信方法的流程示意圖:
步驟102,采用非阻塞式io線程與發送端建立連接;
步驟104,接收并保存發送端的消息信息及連接信息;
步驟106,根據消息信息確認接收端,并將消息內容發送至接收端。
在該實施例中,由于每臺服務器需要接受海量的用戶連接,同時會有較大的并發請求,通過采用非阻塞式io線程與發送端建立連接,只需要一個線程即可接受所有通道連接,而每個連接對應的業務處理,由后續的處理線程來執行;每個發送端連接登錄成功后,由服務器保存發送端的消息信息及連接信息;根據消息信息確認接收端,將消息內容推送至接收端。通過本發明的技術方案,大大節約了系統資源,增加消息的到達率及可靠性,并實現移動終端與web終端消息互通,從而滿足協同工作的需求,提升辦公效率和管理手段。
如圖2所示,根據本發明再一實施例的即時通信方法的流程示意圖:
步驟202,采用非阻塞式io線程與發送端建立連接;
保存發送端的消息信息及連接信息,具體包括:
步驟204,將消息信息保存至緩存數據庫中;
步驟206,判斷發送端的類型,根據發送端的類型保存發送端的連接信息;
步驟208,當發送端為移動終端時,將移動端的連接信息保存至第一內存中;
步驟210,當發送端為web終端時,將web端的連接信息保存至第二內存中;
步驟212,根據消息信息確認接收端,并將消息內容發送至接收端。
在該實施例中,通過將消息信息保存至緩存數據庫中,可以依據實際情況對緩存內的消息信息進行定期清理,進一步節約系統資源,減輕系統的運行負擔;通過將移動端的連接信息保存至第一內存中,將web端的連接信息保存至第二內存中,在將消息內容推送至接收端時,縮小接收端地址信息的查找范圍,從而高效、快捷的推送消息內容至接收端,增加消息的到達率及可靠性。
如圖3所示,根據本發明又一實施例的即時通信方法的流程示意圖:
步驟302,采用非阻塞式io線程與發送端建立連接;
保存發送端的消息信息及連接信息,具體包括:
步驟304,將消息信息保存至緩存數據庫中;
步驟306,判斷發送端的類型,根據發送端的類型保存發送端的連接信息;
步驟308,當發送端為移動終端時,將移動端的連接信息保存至第一內存中;
步驟310,當發送端為web終端時,將web端的連接信息保存至第二內存中;
根據消息信息確認接收端,并將消息內容發送至接收端,具體包括:
步驟312,判斷發送端的類型與接收端的類型是否一致;
步驟314,當判斷結果為是時,直接將消息內容發送至接收端;
步驟316,當判斷結果為否時,將消息內容進行格式轉換,并將轉換后的消息內容發送至接收端。
在該實施例中,通過判斷發送端與接收端的類型是否一致,當判斷結果一致時,說明實現的是移動端與移動端或web端與web端直接的單一通信,此時直接將消息內容發送至接收端即可,無需對消息內容進行格式上的轉換;判斷結果不一致時,說明實現的是移動端與web端之間的消息互通,此時需要將發送端發送的消息內容進行格式轉換,以適應接收端的內容格式協議。從而實現移動端的消息推送、web端的消息推送及移動端與web端之間的消息互通。
在上述實施例中,優選地,將消息內容進行格式轉換,具體包括:將json協議與自定義二進制協議相互轉換。
在該實施例中,移動端所推送的消息內容自定義了二進制協議,由于傳統的即時通信系統大都采用xmpp協議,該協議為xml結構,其內容大都通過節點描述信息,整體協議60%為無用內容,導致移動互聯網環境下,比較消耗用戶的電量及流量,而自定義二進制協議,由于協議內容較小,且長度固定,減少了數據的冗余、傳輸速率得到了提高,相應的安全性也得到了加強;同時web端為了兼容不同廠商的瀏覽器,所推送的消息內容采用的協議是json格式,從而便于游覽器的解析及擴展;通過將web端采用json協議定義的消息內容與移動端采用自定義二進制協議定義的消息內容相互轉換,從而完成移動端與web端的即時通信。
在上述實施例中,優選地,連接信息包括以下至少一項或其組合:發送端的ip、端口信息;消息信息包括以下至少任一項或其組合:消息內容、接收端的ip。
在該實施例中,根據消息信息從相應的緩存中獲取到接收端的ip,在相應的內存中查找到與該ip對應的端口信息,進而完成消息內容的推送。本領域技術人員應該理解,發送端和接收端同為客戶端,發送端與接收端是相對的;另外,連接信息包括發送端的ip、端口信息,但不限于此;消息信息包括消息內容、接收端的ip,但不限于此。
如圖4所示,根據本發明一實施例的即時通信裝置的示意框圖:
連接單元402,用于采用非阻塞式io線程與發送端建立連接;
存儲單元404,用于接收并保存發送端的消息信息及連接信息;
發送單元406,用于根據消息信息確認接收端,并將消息內容發送至接收端。
在該實施例中,由于每臺服務器需要接受海量的用戶連接,同時會有較大的并發請求,通過采用非阻塞式io線程與發送端建立連接,只需要一個線程即可接受所有通道連接,而每個連接對應的業務處理,由后續的處理線程來執行;每個發送端連接登錄成功后,由服務器保存發送端的消息信息及連接信息;根據消息信息確認接收端,將消息內容推送至接收端。通過本發明的技術方案,大大節約了系統資源,增加消息的到達率及可靠性,并實現移動終端與web終端消息互通,從而滿足協同工作的需求,提升辦公效率和管理手段。
如圖5所示,根據本發明再一實施例的即時通信裝置的示意框圖:
連接單元502,用于采用非阻塞式io線程與發送端建立連接;
存儲單元504,用于接收并保存發送端的消息信息及連接信息;
發送單元506,用于根據消息信息確認接收端,并將消息內容發送至接收端;
其中存儲單元504具體包括:
緩存單元5042,用于將消息信息保存至緩存數據庫中;
第一判斷單元5044,用于判斷發送端的類型,根據發送端的類型保存發送端的連接信息;
內存單元5046,用于當發送端為移動終端時,將移動端的連接信息保存至第一內存中;當發送端為web終端時,將web端的連接信息保存至第二內存中。
在該實施例中,通過將消息信息保存至緩存數據庫中,可以依據實際情況對緩存內的消息信息進行定期清理,進一步節約系統資源,減輕系統的運行負擔;通過將移動端的連接信息保存至第一內存中,將web端的連接信息保存至第二內存中,在將消息內容推送至接收端時,縮小接收端地址信息的查找范圍,從而高效、快捷的推送消息內容至接收端,增加消息的到達率及可靠性。
如圖6所示,根據本發明又一實施例的即時通信裝置的示意框圖:
連接單元602,用于采用非阻塞式io線程與發送端建立連接;
存儲單元604,用于接收并保存發送端的消息信息及連接信息;
發送單元606,用于根據消息信息確認接收端,并將消息內容發送至接收端;
其中存儲單元604具體包括:
緩存單元6042,用于將消息信息保存至緩存數據庫中;
第一判斷單元6044,用于判斷發送端的類型,根據發送端的類型保存發送端的連接信息;
內存單元6046,用于當發送端為移動終端時,將移動端的連接信息保存至第一內存中;當發送端為web終端時,將web端的連接信息保存至第二內存中;
其中發送單元606具體包括:
第二判斷單元6062,用于判斷發送端的類型與接收端的類型是否一致;
直接發送單元6064,用于當判斷結果為是時,直接將消息內容發送至接收端;
格式轉換單元6066,用于當判斷結果為否時,將消息內容進行格式轉換,并將轉換后的消息內容發送至接收端。
在該實施例中,通過判斷發送端與接收端的類型是否一致,當判斷結果一致時,說明實現的是移動端與移動端或web端與web端直接的單一通信,此時直接將消息內容發送至接收端即可,無需對消息內容進行格式上的轉換;判斷結果不一致時,說明實現的是移動端與web端之間的消息互通,此時需要將發送端發送的消息內容進行格式轉換,以適應接收端的內容格式協議。從而實現移動端的消息推送、web端的消息推送及移動端與web端之間的消息互通。
在上述實施例中,優選地,格式轉換單元,具體包括:將json協議與自定義二進制協議相互轉換。
在該實施例中,移動端所推送的消息內容自定義了二進制協議,由于傳統的即時通信系統大都采用xmpp協議,該協議為xml結構,其內容大都通過節點描述信息,整體協議60%為無用內容,導致移動互聯網環境下,比較消耗用戶的電量及流量,而自定義二進制協議,由于協議內容較小,且長度固定,減少了數據的冗余、傳輸速率得到了提高,相應的安全性也得到了加強;同時web端為了兼容不同廠商的瀏覽器,所推送的消息內容采用的協議是json格式,從而便于游覽器的解析及擴展;通過將web端采用json協議定義的消息內容與移動端采用自定義二進制協議定義的消息內容相互轉換,從而完成移動端與web端的即時通信。
在上述實施例中,優選地,連接信息包括以下至少一項或其組合:發送端的ip、端口信息;消息信息包括以下至少任一項或其組合:消息內容、接收端的ip。
在該實施例中,根據消息信息從相應的緩存中獲取到接收端的ip,在相應的內存中查找到與該ip對應的端口信息,進而完成消息內容的推送。本領域技術人員應該理解,發送端和接收端同為客戶端,發送端與接收端是相對的;另外,連接信息包括發送端的ip、端口信息,但不限于此;消息信息包括消息內容、接收端的ip,但不限于此。
如圖7所示,根據本發明一實施例的服務器的示意框圖:服務器700,包括上述任一實施例中的即時通信裝置702。該服務器700具有與上述任一技術方案中的即時通信裝置702相同的技術效果,在此不再贅述。
具體實施例,工作圈移動端與web端即時通信系統,包括移動端即時通信系統和web端即時通信系統。
其中,移動端即時通信系統采用非阻塞式io,結合自定義的二進制協議進行了系統的架構。所設計非阻塞式io線程模型如圖8所示,采用非阻塞式io,只需要一個線程即可接受所有通道連接,而每個連接對應的業務處理,由后續的處理線程來執行,該線程模型大大節約了系統資源。每個客戶端連接登錄成功后,由服務器保存連接狀態,包括客戶端ip及端口等信息。應用之間的消息推送,即為連接與連接之間的內容推送。舉例來說,當用戶a與用戶b之間發消息時,只需將用戶a的消息發送至服務器端,由服務器找到用戶b所在的機器,繼而可以找到用戶b的實際連接,將消息內容推送至用戶b的連接即可。所自定義的二進制協議,如表1所示:
表1自定義二進制協議
其中,content為實際推送的消息內容,length為包長,由于是二進制協議,協議內容較小,且長度固定,減少了數據的冗余,傳輸速率得到了提高,相應的安全性也得到了加強。
web端即時通信系統與移動端即時通信系統的區別在于,web端采用了websocket協議,從而維持html頁面的長連接,如圖9所示,websocket協議主要通過前兩個字節來描述數據包的情況,最高位用于描述消息內容是否結束,消息的第二個字節主要用于描述掩碼和消息長度。具體的,fin:1位用于描述消息是否結束;rsv1、rsv2、rsv3各1位,用于擴展定義;opcode:4位,用于表示消息接收類型,如果接收到未知的opcode,接收端必須關閉連接;mask:1位,用于標識payloaddata是否經過掩碼處理,客戶端發出的數據幀需要進行掩碼處理,所以此位是1;后面的字節是消息體。
通過web頁面建立的連接,在服務器端采用單獨的內存對象來存儲;向頁面推送消息,也即是從內存中找到連接對象實體,將消息內容推送至其連接客戶端;為了兼容不同廠商的瀏覽器,所推送的消息內容采用的協議的是json格式,從而便于游覽器的解析及擴展。移動端所有的連接,存儲對象位于map<mobile>中,web端所有的連接,存儲對象位于map<web>中,兩端間的消息互通,主要做的是將移動端的二進制協議,與web頁面所需要的json格式的內容轉換,轉換完成后,從相應連接對象緩存中,查找到具體連接,將消息內容推送至通道即可,即完成移動端與web端的消息即時通信。
在該實施例中,工作圈移動端與web端即時通信系統,分別處理移動端及web端請求的業務處理工作。本架構與之前的xml架構相比,由原來的單機支撐200人同時在線,提升至了單機支撐1000000萬人同時在線。采用新的二進制協議,消息內容與之前xmpp內容相比,基本減少了6倍左右,同時消息的到達率及可靠性得到了較大的增加。
在本說明書的描述中,術語“第一”、“第二”僅用于描述的目的,而不能理解為指示或暗示相對重要性。對于本領域的普通技術人員而言,可以根據具體情況理解上述術語在本發明中的具體含義。
以上所述僅為本發明的優選實施例而已,并不用于限制本發明,對于本領域的技術人員來說,本發明可以有各種更改和變化。凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護范圍之內。