我使用websockets编写了一个web聊天应用程序。它每页使用一个连接将新消息推送给在线用户。在golang中存储websocket连接的最佳方式是什么
所以,有很多websocket.Conn
来管理。我目前正在使用地图。
onlineUser = map[int] *websocket.Conn
当1,000,000页打开时,我非常担心地图。
还有更好的方法来存储所有的websocket.Conn
?
Erlang的内部数据库可以用来存储erlang套接字。
对于Go,我曾考虑使用“encoding/gob”将套接字缓存在memcached或redis中。但之前使用websocket.Conn
它,但被GOB解码,并将消耗太多的CPU。
一旦你有1E9并发连接,你将会遇到不同的问题。 – Volker
映射是内部的哈希表。 Go的开发人员在这里做得很好,我不会过多担心它的性能。 (无论如何,你是否进行了基准测试?) – fuz