欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

golang基于websocket通信tcp keepalive研究記錄

 更新時(shí)間:2022年06月01日 17:31:20   作者:若-飛  
這篇文章主要為大家介紹了golang基于websocket通信tcp keepalive研究記錄,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

為什么有tcp Keepalive?

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

這時(shí)候TCP協(xié)議提出一個(gè)辦法,當(dāng)客戶端端等待超過(guò)一定時(shí)間后自動(dòng)給服務(wù)端發(fā)送一個(gè)空的報(bào)文,如果對(duì)方回復(fù)了這個(gè)報(bào)文證明連接還存活著,如果對(duì)方?jīng)]有報(bào)文返回且進(jìn)行了多次嘗試都是一樣,那么就認(rèn)為連接已經(jīng)丟失,客戶端就沒(méi)必要繼續(xù)保持連接了。如果沒(méi)有這種機(jī)制就會(huì)有很多空閑的連接占用著系統(tǒng)資源。

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

 RFC1122#TCP Keep-Alives

tcp Keepalive是否默認(rèn)開(kāi)啟?

KeepAlive默認(rèn)情況下是關(guān)閉的,可以被上層應(yīng)用開(kāi)啟和關(guān)閉

如何設(shè)置tcp keepalive?

在Linux內(nèi)核設(shè)置

KeepAlive默認(rèn)不是開(kāi)啟的,如果想使用KeepAlive,需要在你的應(yīng)用中設(shè)置SO_KEEPALIVE才可以生效。

查看當(dāng)前的配置:

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中我們可以通過(guò)修改 /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 命令來(lái)查看當(dāng)前的默認(rèn)配置

golang websocket 客戶端默認(rèn)怎么處理tcp keepalive?

websocket客戶端默認(rèn)是開(kāi)啟tcp keepalive的

客戶端調(diào)用的是net/dial的方法DialContext:

決定是否開(kāi)啟keepalive,取決于dial的keepalive的值,>>0就開(kāi)啟

把客戶端的代碼改造以后,就可以決定是否主動(dòng)開(kāi)啟了:

golang websocket 服務(wù)器默認(rèn)怎么處理tcp keepalive?

websocket服務(wù)器默認(rèn)是開(kāi)啟tcp keepalive的

客戶端調(diào)用的是net/tcpsock_posix的tcplistener的accept方法決定的:

tcplistenser的lc配置文件的keepalive字段>>0就開(kāi)啟tcp keepalive

把服務(wù)器改造一下,支持能夠主動(dòng)開(kāi)關(guān)tcp keepalive:

以上就是golang基于websocket通信tcp keepalive研究記錄的詳細(xì)內(nèi)容,更多關(guān)于golang websocket通信tcp keepalive的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 簡(jiǎn)單講解Go程序中使用MySQL的方法

    簡(jiǎn)單講解Go程序中使用MySQL的方法

    這篇文章主要介紹了Go程序中使用MySQL的方法,需要使用第三方包來(lái)進(jìn)行連接,需要的朋友可以參考下
    2015-10-10
  • golang中context的作用詳解

    golang中context的作用詳解

    這篇文章主要介紹了golang中context的作用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • Golang中的Slice與數(shù)組及區(qū)別詳解

    Golang中的Slice與數(shù)組及區(qū)別詳解

    數(shù)組是一種具有固定長(zhǎng)度的基本數(shù)據(jù)結(jié)構(gòu),在golang中與C語(yǔ)言一樣數(shù)組一旦創(chuàng)建了它的長(zhǎng)度就不允許改變,數(shù)組的空余位置用0填補(bǔ),不允許數(shù)組越界。今天小編通過(guò)實(shí)例代碼操作給大家詳細(xì)介紹lang中的Slice與數(shù)組的相關(guān)知識(shí),一起看看吧
    2020-02-02
  • 詳解Go 創(chuàng)建命令行工具的方法

    詳解Go 創(chuàng)建命令行工具的方法

    這篇文章主要介紹了詳解Go 創(chuàng)建命令行工具,需要的朋友可以參考下
    2020-12-12
  • Golang中的自定義類型之間的轉(zhuǎn)換的實(shí)現(xiàn)(type conversion)

    Golang中的自定義類型之間的轉(zhuǎn)換的實(shí)現(xiàn)(type conversion)

    這篇文章主要介紹了Golang中的自定義類型之間的轉(zhuǎn)換的實(shí)現(xiàn)(type conversion),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • golang中日期操作之日期格式化及日期轉(zhuǎn)換

    golang中日期操作之日期格式化及日期轉(zhuǎn)換

    在編程中,程序員會(huì)經(jīng)常使用到日期相關(guān)操作,下面這篇文章主要給大家介紹了關(guān)于golang中日期操作之日期格式化及日期轉(zhuǎn)換的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • 詳解Golang中下劃線的使用方法

    詳解Golang中下劃線的使用方法

    這篇文章主要介紹了詳解Golang中下劃線的使用方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • Go語(yǔ)言使用goroutine及通道實(shí)現(xiàn)并發(fā)詳解

    Go語(yǔ)言使用goroutine及通道實(shí)現(xiàn)并發(fā)詳解

    這篇文章主要為大家介紹了Go語(yǔ)言使用goroutine及通道實(shí)現(xiàn)并發(fā)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Go中的gRPC入門教程詳解

    Go中的gRPC入門教程詳解

    本文詳細(xì)講解了Go中的gRPC入門教程,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-03-03
  • Golang?中的?unsafe.Pointer?和?uintptr詳解

    Golang?中的?unsafe.Pointer?和?uintptr詳解

    這篇文章主要介紹了Golang中的unsafe.Pointer和uintptr詳解,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-08-08

最新評(píng)論