溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

golang基于websocket通信tcp?keepalive實例分析

發布時間:2022-06-02 09:46:55 來源:億速云 閱讀:298 作者:zzz 欄目:開發技術

本文小編為大家詳細介紹“golang基于websocket通信tcp keepalive實例分析”,內容詳細,步驟清晰,細節處理妥當,希望這篇“golang基于websocket通信tcp keepalive實例分析”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

    為什么有tcp Keepalive?

    服務器和客戶端建立tcp連接以后,客戶端/服務器如何知道對方是否掛掉了? 

    這時候TCP協議提出一個辦法,當客戶端端等待超過一定時間后自動給服務端發送一個空的報文,如果對方回復了這個報文證明連接還存活著,如果對方沒有報文返回且進行了多次嘗試都是一樣,那么就認為連接已經丟失,客戶端就沒必要繼續保持連接了。如果沒有這種機制就會有很多空閑的連接占用著系統資源。

    KeepAlive并不是TCP協議規范的一部分,但在幾乎所有的TCP/IP協議棧(不管是Linux還是Windows)中,都實現了KeepAlive功能。

     RFC1122#TCP Keep-Alives

    tcp Keepalive是否默認開啟?

    KeepAlive默認情況下是關閉的,可以被上層應用開啟和關閉

    如何設置tcp keepalive?

    在Linux內核設置

    KeepAlive默認不是開啟的,如果想使用KeepAlive,需要在你的應用中設置SO_KEEPALIVE才可以生效。

    查看當前的配置:

    cat /proc/sys/net/ipv4/tcp_keepalive_time
    cat /proc/sys/net/ipv4/tcp_keepalive_intvl
    cat /proc/sys/net/ipv4/tcp_keepalive_probes

    在Linux中我們可以通過修改 /etc/sysctl.conf 的全局配置:

    net.ipv4.tcp_keepalive_time=7200
    net.ipv4.tcp_keepalive_intvl=75
    net.ipv4.tcp_keepalive_probes=9

    添加上面的配置后輸入 sysctl -p 使其生效,你可以使用 sysctl -a | grep keepalive 命令來查看當前的默認配置

    golang websocket 客戶端默認怎么處理tcp keepalive?

    websocket客戶端默認是開啟tcp keepalive的

    客戶端調用的是net/dial的方法DialContext:

    golang基于websocket通信tcp?keepalive實例分析

    決定是否開啟keepalive,取決于dial的keepalive的值,>>0就開啟

    把客戶端的代碼改造以后,就可以決定是否主動開啟了:

    golang基于websocket通信tcp?keepalive實例分析

    golang websocket 服務器默認怎么處理tcp keepalive?

    websocket服務器默認是開啟tcp keepalive的

    客戶端調用的是net/tcpsock_posix的tcplistener的accept方法決定的:

    golang基于websocket通信tcp?keepalive實例分析

    tcplistenser的lc配置文件的keepalive字段>>0就開啟tcp keepalive

    把服務器改造一下,支持能夠主動開關tcp keepalive:

    golang基于websocket通信tcp?keepalive實例分析

    讀到這里,這篇“golang基于websocket通信tcp keepalive實例分析”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女