請問如果一個客戶端在初始化長連接之后,再進行一次初始化,是否會觸發(fā)onclose回調
這得看你是什么客戶端以及是怎么初始化的了:
1、比如瀏覽器每刷新一次,客戶端連接對象每次都會釋放,所以每次刷新都會觸發(fā)onClose 回調;
2、比如自行開發(fā)的PHP客戶端采用了類似單例模式的連接池,那么則不會觸發(fā)onClose回調;
3、另外如果你每次初始化時都主動關閉之前建立的連接,那么則會觸發(fā)onClose回調;
?
主動關閉之前的連接指的是主動調用onclose嗎?我也不知道前端那邊是怎樣的,現在我的情況是應用切換到后臺后只要沒有超過心跳 的設定的秒數,就不會調用onclose,但是斷網后就會,我看了一下這兩個的區(qū)別,就是斷網后他會重新初始化長連接,切換到后臺則不會
1、主動關閉一般指的是程序內部顯式的調用如close()方法來關閉連接;
2、斷網肯定會導致連接的斷開,但是這種情況服務端是無法感知客戶端連接斷開事件的,也就是無法觸發(fā)onClose回調,這也正是“心跳”機制的用武之地,之所以斷網了還能觸發(fā)onClose,那是因為你設有心跳機制。