Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

发送消息设计问题 #185

Closed
heipacker opened this issue Jul 3, 2017 · 4 comments
Closed

发送消息设计问题 #185

heipacker opened this issue Jul 3, 2017 · 4 comments

Comments

@heipacker
Copy link

现在goim是第一次认证连接就需要指定连接哪个房间,这个不应该放在一起, 应该连接就只是一个单纯的连接,至于是不是要进入到哪个房间应该通过一个消息来说明, 比如进入房间的消息,退出房间的消息,这样就可以任意切换, 我想这个应该跟qq是一样的吧, 不然qq你一打开就进入到哪里?

@molon
Copy link

molon commented Jul 4, 2017

其实我的理解是 goim 里的这个room 是类似直播房间里发弹幕那种,进入到某房间才会去建立一个针对于这个房间的连接。

而如果要实现具体的IM那种群组的话,估计goim的想法是让我们自己去维护群组表,存储有哪些UID之类的,最后通过调用其logic里的一个消息发送到多uid方法去实现群组功能。

@heipacker
Copy link
Author

其实建立连接跟房间可以没关系的, 如果这样设计那就是每进入一个房间就建立一个新连接那 新建,断开这样会频繁很多,进入房间完全可以通过一个消息类型来解决,这样用户每次新进入房间都是建立在一条连接山

@Terry-Mao
Copy link
Owner

这个确实是早期协议涉及的一些缺陷,我们内部也在做优化,主要是业务场景当时没有多房间需求,有几种改法:
1、comet维护,连接归属哪些个room,每次更换房间,发一个指令切换房间;
2、更通用是在router维护这个关系,comet纯连接,这样好处是,业务解耦

@tonybase
Copy link
Collaborator

关于room其实有两种设计的:
1、网关room,比如直播方式的房间可能达到百万人在线,这种合适使用room广播消息是最节省的;
2、业务room,实现类似qq和wechat那种,后端存储维护room用户关系信息,按用户维度推送,合适大概限制500人左右,存在放大推送问题;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants