我們正在使用自己的通知系統構建聊天室,而不依賴GCM,但需要服務人員+ SSE。 在桌面上它很好,但在移動android應用程序(它使用科爾多瓦人行橫道,鉻53)。 長時間運行的通知連接在20-30分鐘後停滯,並處於前臺活動狀態。 它不會因爲錯誤而死亡,只是不會收集數據。根本沒有錯誤,這很奇怪。無法重新連接,因爲我們不知道連接是否已經死亡。Android上的Chrome瀏覽器:連接在30分鐘後死機
什麼是最乾淨的方式?每5分鐘重新啓動連接是一個想法,但它不乾淨。 代碼
runEvtSource(url, fn) {
if (this.get('session.content.isAuthenticated') === true) {
var evtSource = new EventSource(url, {
withCredentials: true
});
}}
侵略性重新連接代碼
var evtSource = this.runEvtSource(url, fn)
var evtSourceErrorHandler = (event) => {
var txt;
switch (event.target.readyState) {
case EventSource.CONNECTING:
txt = 'Reconnecting...';
evtSource.onerror = evtSourceErrorHandler;
break;
case EventSource.CLOSED:
txt = 'Reinitializing...';
evtSource = this.runEvtSource(url, fn)
evtSource.onerror = evtSourceErrorHandler;
break;
}
console.log(txt);
evtSource.onerror = evtSourceErrorHandler
您是否定期嘗試(小於您似乎遇到的超時)發送數據以保持連接活着? – gzost
nope我還沒有嘗試過,這意味着發送假數據? –
真的不是「假」數據,而是具有保持連接活動的唯一目的的數據(通常稱爲ping/pong)。 – gzost