go - 带有Websocket和Redis的多房间聊天应用程序

标签 go websocket redis real-time

我想创建一个包含多个房间的聊天应用程序。
我有带表的Postgres数据库:用户,聊天,chat_users, friend ,friend_requests,chat_invites,消息。为了实时通知用户,我使用了存储在map中的websocket,每个websocket都有自己的ID(始终是用户的ID)。为了通知一组客户,我将连接ID​​存储在Redis集中,每次我需要将event发送到 session 室时,我都会通过[] int64中的smembers获得成员,并通过数组将其发送给每个迭代的成员。这是一个好方法吗?

最佳答案

老实说,您的方法似乎有些过分设计。

我将从创建最简单可行的方法开始-不使用Postgres或Redis。服务器可以将其数据保存在某些受并发锁保护的映射/结构中。无论如何,客户不需要任何这些。

一旦有了基本的工作,就可以开始考虑更多涉及架构来满足特定需求。

这将帮助您将问题一分为二,变得更小,更易于管理。

关于go - 带有Websocket和Redis的多房间聊天应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60816319/

相关文章:

go - 用于公共(public)和私有(private)路由中间件的 httprouter 和 negroni

go - 如何在 Amazon Linux 中更新 Go 应用程序

php - Symfony2 WebSocketBundle - ZMQ 推送不起作用

去解包数组作为 path.Join 的参数

templates - 在 Go 模板中迭代一系列整数

node.js - 多个 socket.io 服务器共享单个 HTTP/S 服务器

php - 在网页上实时显示通知和消息的最佳方式?

wpf - ServiceStack Redis 搜索很慢。如何优化?

node.js - Node JS Redis 客户端连接重试

redis - 扫描 redis 集以获取某些值并在队列中创建和操作