0

那裏。我目前正在製作一個python網絡聊天程序。目前,它只能在本地網絡上運行,並且由於路由器的防火牆阻止了發送給它們的消息,因此無法將消息發送到網絡外部的客戶端。郵件應用程序如何繞過防火牆?

所以,我的問題是:消息應用程序如何繞過防火牆向客戶端發送消息?他們是否使用類似於「從服務器獲取」信息的方式,並將消息通過隧道傳回給服務器?但即使如此,如果每秒鐘都在取電,也會使用大量電池。每分鐘抓取都是不切實際的。我認爲他們更多地使用「推送」協議,就像我的IMAP服務器將我的電子郵件「推送」到我的手機一樣。但是,這些連接如何通過防火牆?

+0

他們正在連接他們的端口443的插座,這是不正常阻止 –

+0

但是,路由器將如何知道哪個客戶端發送消息? – Joshua

回答

0

我認爲你正在尋找的是某種推送通知架構。我想指出,你在這兩個資源:

本質上,客戶端設備建立與它保持無限期開放的通知服務器全雙工連接。應用程序服務器向通知服務器註冊,當他們不通知客戶端設備時,他們將消息發送到通知服務器,通知服務器使用打開的連接到客戶端設備來通知他們。出於效率原因,通常不同的應用使用相同的通知服務器

因此,回顧一下,客戶端設備與通知服務器建立雙向連接,應用服務器將通知發送給通知服務器,通知服務器將通知發送給相應的客戶端。

+0

所以,我必須打開一個套接字,並保持該套接字打開,直到用戶關閉套接字? – Joshua

+0

是的,你可以這樣做,但我不認爲這是唯一可能的方式。我建議你找一個推送通知服務器的開源實現,並親自看看它們是如何實現的。這會給你更多的背景,而不是簡單的回答。 –

+0

好的。非常感謝你。 – Joshua