ZBLOG

golang websocket 使用压缩算法发送内容的话,如何获取每次发送信息的压缩率

在 Golang 中使用 WebSocket 发送压缩内容,需要在客户端和服务器端都进行相应的设置。

对于客户端,可以使用 golang.org/x/net/websocket 包提供的 websocket.Dialer 结构体,并设置其 EnableCompression 字段为 true。例如:

ws, err := websocket.Dial("ws://example.com/ws", "", "http://example.com/")
if err != nil {
    log.Fatal(err)
}
d := websocket.Dialer{EnableCompression: true}
ws, _, err = d.Dial("ws://example.com/ws", nil)
if err != nil {
    log.Fatal(err)
}

对于服务器端,可以使用 github.com/gorilla/websocket 包提供的 Upgrader 结构体,并设置其 EnableCompression 字段为 true。例如:

u := websocket.Upgrader{EnableCompression: true}
conn, err := u.Upgrade(w, r, nil)
if err != nil {
    log.Fatal(err)
}

每次发送信息时,WebSocket 库内部会自动进行压缩,并将压缩后的数据通过 WebSocket 连接发送出去。由于压缩率是内部计算的,因此无法从 API 层面获取到。如果需要获取压缩率,可以通过在客户端和服务器端分别记录每次发送前和发送后的数据大小,然后计算两者之间的比例来估算压缩率。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=1165

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?