gpt4 book ai didi

websocket - 在 golang 中存储 websocket 连接的最佳方式是什么

转载 作者:IT王子 更新时间:2023-10-29 02:34:43 25 4
gpt4 key购买 nike

我使用 websockets 编写了一个网络聊天应用程序。它每页使用一个连接向在线用户推送新消息。

所以,有很多websocket.Conn需要管理。我目前正在使用 map 。

onlineUser = map[int] *websocket.Conn

打开1,000,000页时,我很担心 map 。

有没有更好的方法来存储所有的websocket.Conn


Erlang 的内部数据库可用于存储 erlang 套接字。

对于Go,我考虑过使用“encoding/gob”在memcached或redis中缓存socket。但是在使用 websocket.Conn 之前,它会被 GOB 解码,这会消耗太多 CPU。

最佳答案

1,000,000 个并发用户是一个不错的问题。 :)

您的主要问题是 websocket 规范要求连接保持打开状态。这意味着您无法序列化和缓存它们。

但是,如果您可以对它们进行 GOB 编码,并且每个用户每秒发送一条消息(不切实际的高 IMO),那么每秒一百万个 GOB 解码不会支配您的负载。

map 也可以轻松处理一百万个条目。

如果你真的想担心 future 的扩展,弄清楚如何让你的应用程序的两个实例在负载上协同工作。然后将其增加到 N 个实例。

关于websocket - 在 golang 中存储 websocket 连接的最佳方式是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19055306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com