本發(fā)明涉及進程通訊,具體涉及一種基于管道在electron中實現(xiàn)跨進程通訊的方法。
背景技術(shù):
1、在一個多任務、多進程的操作系統(tǒng)中,不同的進程可能需要相互通訊,共享信息,以完成更復雜的任務。一般地,進程與進程之間是相互隔離的,在多進程的操作系統(tǒng)中,每個進程都有獨立的內(nèi)存空間,獨立的資源。這種隔離保證了一個進程的錯誤不會直接影響其他進程,同時也增強了系統(tǒng)的穩(wěn)定性和安全性。
2、操作系統(tǒng)中一般會提供基礎(chǔ)的通訊方式,比如管道、共享內(nèi)存、套接字等。其中管道是一種基本的ipc機制,它允許一個進程將數(shù)據(jù)寫入管道,而另一個進程則可以從管道中讀取這些數(shù)據(jù),它提供了單向的通訊機制,但是在實踐的過程中,通訊一般都是雙向通訊,需要同時讀寫數(shù)據(jù)。
3、electron?是一種開源框架,用于構(gòu)建跨平臺的桌面應用程序。electron?使用html、css?和?javascript?來構(gòu)建桌面應用程序,結(jié)合了chromium渲染引擎和?node.js運行時環(huán)境,從而使開發(fā)者能夠使用前端技術(shù)創(chuàng)建強大的桌面應用。node.js?提供了服務器端的能力,使得開發(fā)者可以在桌面應用中使用后端功能。同時利用其具有的跨平臺性,開發(fā)者可以使用相同的代碼來構(gòu)建windows、macos?和?linux?操作系統(tǒng)的桌面應用程序,應用非常廣泛。但是electron并沒有提供標準的跨進程通訊方式,而跨進程通訊又是桌面應用開發(fā)常用的技術(shù)手段來實現(xiàn)應用間的數(shù)據(jù)交互,在跨進程交互中,消息的可達性是通訊的關(guān)鍵,為此需要在需要通訊時判斷應用是否存在、應用是否開啟等,因此本發(fā)明提出一種基于管道在electron中實現(xiàn)跨進程通訊的方法,以提高electron場景下進程間通訊的可靠性與可達性。
技術(shù)實現(xiàn)思路
1、本發(fā)明的目的在于,提供一種基于管道在electron中實現(xiàn)跨進程通訊的方法,保證跨進程通訊的安全性和可靠性。
2、為實現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案如下:
3、一種基于管道在electron中實現(xiàn)跨進程通訊的方法,包括:
4、步驟1、在electron中創(chuàng)建第一管道和第二管道;
5、步驟2、打開electron的開發(fā)應用和第三方應用并使二者鏈接上第一管道和第二管道;
6、步驟3、開發(fā)應用上線生成上線消息并通過第一管道發(fā)送給第三方應用,第三方應用讀取上線消息,等待開發(fā)應用與第三方應用的數(shù)據(jù)交互;
7、步驟4、開發(fā)應用生成數(shù)據(jù)交互消息并通過第一管道發(fā)送給第三方應用,第三方應用讀取數(shù)據(jù)交互消息并解析出數(shù)據(jù)交互消息中的數(shù)據(jù),完成數(shù)據(jù)交互;或者第三方應用生成數(shù)據(jù)交互消息并通過第二管道發(fā)送給開發(fā)應用,開發(fā)應用讀取數(shù)據(jù)交互消息并解析出數(shù)據(jù)交互消息中的數(shù)據(jù),完成數(shù)據(jù)交互;
8、在步驟4的數(shù)據(jù)交互過程中,開發(fā)應用通過第一管道或第三方應用通過第二管道定時向?qū)Ψ桨l(fā)送心跳消息,對方接收心跳消息,將發(fā)送心跳消息的應用加入創(chuàng)建的心跳隊列中,從心跳隊列中移除在設(shè)定的一個心跳時間內(nèi)未再發(fā)送心跳消息的應用,并標記此應用處于不可應答狀態(tài),開發(fā)應用或第三方應用僅與心跳隊列中的應用進行數(shù)據(jù)交互。
9、進一步地,步驟1包括:步驟11、加載electron,獲取electron的緩存路徑;步驟12、判斷緩存路徑中是否存在包含有第一管道和第二管道的緩存文件,不存在,則在緩存路徑中以緩存文件的形式創(chuàng)建第一管道和第二管道。
10、進一步地,步驟2中,鏈接上第一管道和第二管道具體包括以下操作;獲取electron的緩存路徑,從緩存路徑中讀取緩存文件,使開發(fā)應用/第三方應用鏈接上第一管道和第二管道。
11、進一步地,第三方應用包括一個或多個。
12、進一步地,上線消息的數(shù)據(jù)結(jié)構(gòu)包括發(fā)送消息的應用、消息類型為廣播消息。
13、進一步地,開發(fā)應用生成上線消息/數(shù)據(jù)交互消息/心跳消息通過第一管道發(fā)送給第三方應用,第三方應用讀取上線消息/數(shù)據(jù)交互消息/心跳消息,具體包括以下步驟:步驟a1、開發(fā)應用生成上線消息/數(shù)據(jù)交互消息/心跳消息;步驟a2、創(chuàng)建可寫流對象;步驟a3、通過可寫流對象將上線消息/數(shù)據(jù)交互消息/心跳消息寫入第一管道;步驟a4、第三方應用監(jiān)聽第一管道,當?shù)谝还艿烙猩暇€消息/數(shù)據(jù)交互消息/心跳消息寫入時,創(chuàng)建可讀流對象;步驟a5、通過可讀流對象將上線消息/數(shù)據(jù)交互消息/心跳消息讀取到第三方應用。
14、進一步地,第三方應用生成數(shù)據(jù)交互消息/心跳消息并通過第二管道發(fā)送給開發(fā)應用,開發(fā)應用讀取數(shù)據(jù)交互消息/心跳消息,具體包括以下步驟:步驟b1、開發(fā)應用生成數(shù)據(jù)交互消息/心跳消息;步驟b2、創(chuàng)建可寫流對象;步驟b3、通過可寫流對象將數(shù)據(jù)交互消息/心跳消息寫入第二管道;步驟b4、開發(fā)應用監(jiān)聽第二管道,當?shù)诙艿烙袛?shù)據(jù)交互消息/心跳消息寫入時,創(chuàng)建可讀流對象;步驟b5、通過可讀流對象將數(shù)據(jù)交互消息/心跳消息讀取到開發(fā)應用。
15、進一步地,數(shù)據(jù)交互消息的數(shù)據(jù)結(jié)構(gòu)包括消息的通用唯一識別碼、發(fā)送消息的應用、接收消息的應用、消息實體、消息類型為數(shù)據(jù)消息。
16、進一步地,步驟4還包括:開發(fā)應用或第三方應用讀取數(shù)據(jù)交互消息后,需要向?qū)l(fā)送消息的第三方應用或開發(fā)應用發(fā)送應答消息,應答消息的數(shù)據(jù)結(jié)構(gòu)包括發(fā)送消息的應用、接收消息的應用、對應數(shù)據(jù)交互消息的通用唯一識別碼、消息類型為應答消息。
17、進一步地,心跳消息的數(shù)據(jù)結(jié)構(gòu)包括發(fā)送消息的應用、消息類型為心跳消息。
18、與現(xiàn)有技術(shù)相比,本發(fā)明具有以下有益效果:
19、本發(fā)明基于管道實現(xiàn)跨進程通訊,創(chuàng)建兩個管道來實現(xiàn)消息的雙工通訊,并采用electron作為主應用來創(chuàng)建維護兩個管道,第三方應用與主應用通訊時,直接對兩個管道進行連接,第三方應用不需要創(chuàng)建管道進行維護。創(chuàng)建兩個管道在不同方向的數(shù)據(jù)交互而言,先對消息生產(chǎn)者發(fā)揮寫管道的功能、再對消息消費者發(fā)揮讀管道的功能,讀管道只負責讀消息,寫管道只負責寫消息,這樣可以隔離數(shù)據(jù)的交互,避免相互影響,同時也能提高數(shù)據(jù)的交互能力。
20、本發(fā)明數(shù)據(jù)交互過程中,通過上線消息、心跳消息來保證應用間通訊的閉環(huán)管理及消息可靠性。上線消息確保第三方應用能夠及時感知到electron應用的存在,心跳消息則有助于保持各應用的活躍狀態(tài),防止意外中斷導致通訊中斷。同時通過應答消息可以有效地確保消息的可靠性,通過確認收到消息來避免丟失或重復傳輸?shù)那闆r。
1.一種基于管道在electron中實現(xiàn)跨進程通訊的方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的一種基于管道在electron中實現(xiàn)跨進程通訊的方法,其特征在于,步驟1包括:步驟11、加載electron,獲取electron的緩存路徑;步驟12、判斷緩存路徑中是否存在包含有第一管道和第二管道的緩存文件,不存在,則在緩存路徑中以緩存文件的形式創(chuàng)建第一管道和第二管道。
3.根據(jù)權(quán)利要求2所述的一種基于管道在electron中實現(xiàn)跨進程通訊的方法,其特征在于,步驟2中,鏈接上第一管道和第二管道具體包括以下操作;獲取electron的緩存路徑,從緩存路徑中讀取緩存文件,使開發(fā)應用/第三方應用鏈接上第一管道和第二管道。
4.根據(jù)權(quán)利要求1所述的一種基于管道在electron中實現(xiàn)跨進程通訊的方法,其特征在于,第三方應用包括一個或多個。
5.根據(jù)權(quán)利要求1所述的一種基于管道在electron中實現(xiàn)跨進程通訊的方法,其特征在于,上線消息的數(shù)據(jù)結(jié)構(gòu)包括發(fā)送消息的應用、消息類型為廣播消息。
6.根據(jù)權(quán)利要求1所述的一種基于管道在electron中實現(xiàn)跨進程通訊的方法,其特征在于,開發(fā)應用生成上線消息/數(shù)據(jù)交互消息/心跳消息通過第一管道發(fā)送給第三方應用,第三方應用讀取上線消息/數(shù)據(jù)交互消息/心跳消息,具體包括以下步驟:步驟a1、開發(fā)應用生成上線消息/數(shù)據(jù)交互消息/心跳消息;步驟a2、創(chuàng)建可寫流對象;步驟a3、通過可寫流對象將上線消息/數(shù)據(jù)交互消息/心跳消息寫入第一管道;步驟a4、第三方應用監(jiān)聽第一管道,當?shù)谝还艿烙猩暇€消息/數(shù)據(jù)交互消息/心跳消息寫入時,創(chuàng)建可讀流對象;步驟a5、通過可讀流對象將上線消息/數(shù)據(jù)交互消息/心跳消息讀取到第三方應用。
7.根據(jù)權(quán)利要求1所述的一種基于管道在electron中實現(xiàn)跨進程通訊的方法,其特征在于,第三方應用生成數(shù)據(jù)交互消息/心跳消息并通過第二管道發(fā)送給開發(fā)應用,開發(fā)應用讀取數(shù)據(jù)交互消息/心跳消息,具體包括以下步驟:步驟b1、開發(fā)應用生成數(shù)據(jù)交互消息/心跳消息;步驟b2、創(chuàng)建可寫流對象;步驟b3、通過可寫流對象將數(shù)據(jù)交互消息/心跳消息寫入第二管道;步驟b4、開發(fā)應用監(jiān)聽第二管道,當?shù)诙艿烙袛?shù)據(jù)交互消息/心跳消息寫入時,創(chuàng)建可讀流對象;步驟b5、通過可讀流對象將數(shù)據(jù)交互消息/心跳消息讀取到開發(fā)應用。
8.根據(jù)權(quán)利要求1所述的一種基于管道在electron中實現(xiàn)跨進程通訊的方法,其特征在于,數(shù)據(jù)交互消息的數(shù)據(jù)結(jié)構(gòu)包括消息的通用唯一識別碼、發(fā)送消息的應用、接收消息的應用、消息實體、消息類型為數(shù)據(jù)消息。
9.根據(jù)權(quán)利要求8所述的一種基于管道在electron中實現(xiàn)跨進程通訊的方法,其特征在于,步驟4還包括:開發(fā)應用或第三方應用讀取數(shù)據(jù)交互消息后,需要向?qū)l(fā)送消息的第三方應用或開發(fā)應用發(fā)送應答消息,應答消息的數(shù)據(jù)結(jié)構(gòu)包括發(fā)送消息的應用、接收消息的應用、對應數(shù)據(jù)交互消息的通用唯一識別碼、消息類型為應答消息。
10.根據(jù)權(quán)利要求1所述的一種基于管道在electron中實現(xiàn)跨進程通訊的方法,其特征在于,心跳消息的數(shù)據(jù)結(jié)構(gòu)包括發(fā)送消息的應用、消息類型為心跳消息。