IM系统中,特别是在企业应用场景下,消息的已读未读状态是一个强需求。
功能看起来很酷,但用起来是一言难尽(上班族心里苦 )。实际上,技术实现也并不容易。
那么,对于已读未读状态:
1)如果是私聊:消息的阅读状态比较容易实现,在性能和存储上也不存在问题;
2)如果是群聊:考虑到存储和处理性能,特别当处于一个云环境时,如何高效地处理群聊的已读未读状态是一个非常值得探讨的话题。
这里提到的“高效”含3个方面:
1)存储空间;
2)处理速度;
3)传输字节数。
本文将从服务端的角度来探讨已读未读状态,在具体的技术实现上对于存储空间占用方面的思路差异。
已读未读状态交互流程
发送者发送的IM聊天消息,在接收者阅读消息后,是否要求阅读者通知已读,可能是由系统配置、组织配置、群组配置等决定,也可能由发送者根据业务需求决定。以下的讨论,均假设消息需要已读未读状态。
客户端与服务端之间,关于阅读状态的命令只需3个,每个命令含请求和应答。
通知消息已读(私聊、群聊通用)
当小宝阅读了一条或若干条消息,需向服务端发送消息已读通知:“众爱卿发的x+y+z消息,朕已阅”。
服务端收到小宝的已读通知时,需完成以下事项:
1)存储消息的已读状态;
2)返回应答给小宝;
3)向已读列表的消息的原始发送者通知消息已读。
对于第“3)”步:
1)私聊的场合,比较好理解,就是发送给私聊的对方;
2)群聊的场合,可很不一样:因为小宝发送的已读消息列表,可能是由众爱卿发送的。考虑这种假设:张三、李四、王五发出的群聊消息,被小宝一下都阅读了,那么小宝发出的已读通知包含的消息列表,需要被IMS分解成3个已读通知(3个不同的消息列表),分别通知给张三、李四、王五,通知内容是“ 爱卿(不含'"众")发的这些消息,朕已阅 ”。
查询消息的未读人数(私聊、群聊通用)
消息的发送者,加载消息列表到聊天窗口时,可能需要展示消息是否被已读。
对群聊而言,显示的信息可能是n人未读的提示,那么需要向服务端查询消息的未读人数,由于客户端可能在UI显示自己发出的多条消息,需支持一次请求查询多条消息。 即时通讯聊天软件开发可以咨询蔚可云开发。
以未读人数的方式来表示消息的阅读状态,统一了私聊、群聊的查询,使得客户端-服务端间的接口更简单,同时使客户端的实现逻辑更统一。
就像下面这样:
1)对于私聊:如果未读人数n>0,表示消息未读;
2)对于群聊:直接显示n人未读即可,当然,当n等于0时表示全部已读。
查询群消息的已读、未读人员清单(群聊)
当客户端希望显示某一条群聊消息的已读、未读人员列表,需向服务端发起查询。
几种具体的已读未读状态存储思路探讨
基本约定
群聊的阅读状态比私聊复杂,因此这里着重讨论群聊的阅读状态。
假设群成员数是n,各个客户端立即IM服务端发送已读通知。服务端需存储每个人的阅读状态,包括那些未读的成员。由于群的成员清单可能变化,比如今天增加了一个成员,则昨天发的消息、与今天发的消息,其接收者列表不一样。
即:
1)同一个群的不同消息,对应的接收者列表可能不一样。
2)换言之,每一条消息都需要记录完整的接收者列表和已读人员列表。
为了方便讨论,本章假设群成员有640人为前提。
存储思路1
每一条消息都维护:
1)接收人员列表receiver_list;
2)已读人员列表read_list。
具体是:
1)IM Server收到一条消息时,用全体群成员构建receiver_list;
2)IM Server收到群成员对这条消息的已读通知时,将此成员加入到read_list。
客户端获取此消息的数据:
1)当需要获取未读人数时,用receiver_list的个数减去read_list的个数;
2)当需要获取已读、未读人员列表时,需用receiver_list减去read_list得到未读人员列表。
那么,思路1每条消息的存储空间是:
640个ID + 不定数量的已读人员ID
存储思路2
每一条消息维护:
1)未读人员列表unread_list;
2)已读人员列表read_list。
具体是:
1)IM Server收到一条消息时,用全体群成员构建unread_list;
2)IM Server收到群成员对这条消息的已读通知时,将此成员从unread_list移出,同时加入到read_list。
客户端获取此消息的数据:
1)当需要获取未读人数时,直接计算unread_list的个数;
2)当需要获取已读、未读人员列表时,直接返回unread_list和read_list。
那么,思路2每条消息的存储空间是:
未读人员ID + 已读人员ID,合计640个ID
思路2的实现,占用的空间是案1的05倍~10倍。即案2占用的空间少,但在每次收到客户端的已读通知时,比案1多了一个 *** 作:从unread_list进行减员。
您好,UE是指Unreal Engine,它是一款强大的游戏引擎,可以用来开发各种类型的游戏。在游戏开发过程中,系统消息是非常重要的一部分,它可以提供游戏运行时的各种信息,如错误提示、警告信息、调试信息等。
UE主动读取系统消息的意思是指,在游戏运行过程中,UE会主动去读取系统消息,并根据这些消息来做出相应的处理。比如,当系统发生错误时,UE可以捕获这个错误,并将错误信息显示给玩家,以便玩家及时发现并解决问题。
UE可以通过调用 *** 作系统提供的API来读取系统消息,比如Windows中的GetMessage函数。在UE中,可以使用FWindowsPlatformMisc::PumpMessages函数来读取消息。这个函数会在游戏循环中被调用,它会不断地读取系统消息,并将其分发给各个窗口和控件。
总之,UE主动读取系统消息是游戏开发中非常重要的一部分,它可以帮助开发者更好地管理游戏运行时的各种信息,提高游戏的稳定性和用户体验。
最简单方法就是用 FindWindows这个API了,你先用SPY++看看这个窗口的classname和caption,然后把它们作为FindWindows的参数
现在我想对该d出式窗口模拟一次回车按键信息,能告诉我怎么弄吗?
很简单,用SendMessage就可以了。
LRESULT SendMessage( HWND hWnd,
UINT Msg,
WPARAM wParam,
LPARAM lParam
);
hWnd:窗口句柄
Msg:可以用WM_KEYDOWN,表示发送按键消息
wParam:VK_RETURN,表示回车键
lParam:用不着,置0就行
四川人口信息网提示获取机构用户列表信息失败,这是一个令人沮丧的事实。原因可能是网络问题,例如网络连接不稳定或者服务器故障等。另外,也可能是因为用户输入的信息不正确,或者服务器上的数据库出现了问题,没有正确提取机构用户列表信息。无论原因是什么,都应该及时处理,以确保用户能够正常获取机构用户列表信息。首先,要检查网络连接是否正常,确保服务器稳定运行;其次,检查用户输入的信息是否正确;最后,检查服务器上的数据库是否正常,以确保服务器能够正确提取机构用户列表信息。只有通过这些步骤,才能有效解决获取机构用户列表信息失败的问题,确保用户能够正常获取机构用户列表信息。
投资美股,常见的消息来源途径主要有以下几种:
1 官方网站:美股交易所官网(NYSE、NASDAQ)、个股公司官网。这些网站会发布公司的官方新闻公告,如季度财报、并购新闻等,是获取第一手信息的渠道。
2 财经新闻网站:比如雅虎财经、美股巴伦、华尔街日报等。这些网站会报道美股市场和上市公司的最新消息与深度分析报告。
3 专业信息终端:如美股行情终端Bloomberg、Dow Jones、Factset等。这些付费终端可以提供深入的公司财务分析、交易数据等专业信息,适合专业投资者使用。
4 股票论坛:如雅虎财经股吧、美股巴伦论坛等。投资者可以在论坛上跟其他人讨论关注的股票动态,了解市场观点。但信息质量参差不齐,需要谨慎判断。
5 证券公司机构:大型证券公司像BiyaPay等,会定期发布行业与个股研究分析,提供专业分析师的投资建议,这也是获取重要市场信息的途径。
6 社交媒体:LinkedIn、Twitter、Facebook等。一些上市公司会在社交媒体上披露部分公司动态。投资者也可以通过社媒了解部分市场观点与传闻,但要审慎判断信息准确性。
如果想投资美股,可以下载一个BiyaPay账户,BiyaPay为港美股持牌券商官方交易软件,集港美股行情、资讯、研报、新股评级、开户、交易、智能选股等功能于一体。在谷歌商店搜索BIYA GLOBAL下载安装,将资金转入到个人注册的资金账户即可,支持法币(美元、港币等)以及数字货币转入两种途径,将法币或数字货币划转至美港股账户即可投资交易。
免责声明:本内容仅供参考,不构成任何投资理财建议。投资有风险,理财需谨慎。
以上就是关于im即时通讯开发:群聊消息的已读未读功能全部的内容,包括:im即时通讯开发:群聊消息的已读未读功能、ue主动读取系统消息、怎么获取窗口发送的消息等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)