目录
回复内容:
首页 后端开发 php教程 在web通知系统中消息载体是如何承载信息的

在web通知系统中消息载体是如何承载信息的

Jun 06, 2016 pm 08:39 PM
mysql php redis web 消息

在一个消息通知系统中,有评论通知、有回复通知等等:

<code> - 每种通知在web前台显示格式是不一样的;

 - 对于同一种通知如评论,根据其所评论的内容在web前台显示时又是不一样的,如评论了日记与评论了照片在消息通知的显示中是不一样的;

 - 另外,一张照片的评论也可能会有好几种显示格式;
</code>
登录后复制
登录后复制

考虑到扩展性,我也不能把要显示的通知内容硬性的写到数据库或redis中,看到网上提到“模板”,如果单纯的根据通知类型调用其显示模板,我觉得也不行,但实在不知如何设计数据库才能实现我上面的需求,不知道大家是怎么设计这种类似的消息通知的?

回复内容:

在一个消息通知系统中,有评论通知、有回复通知等等:

<code> - 每种通知在web前台显示格式是不一样的;

 - 对于同一种通知如评论,根据其所评论的内容在web前台显示时又是不一样的,如评论了日记与评论了照片在消息通知的显示中是不一样的;

 - 另外,一张照片的评论也可能会有好几种显示格式;
</code>
登录后复制
登录后复制

考虑到扩展性,我也不能把要显示的通知内容硬性的写到数据库或redis中,看到网上提到“模板”,如果单纯的根据通知类型调用其显示模板,我觉得也不行,但实在不知如何设计数据库才能实现我上面的需求,不知道大家是怎么设计这种类似的消息通知的?

提一个解决方案:
通知不携带具体的内容或者携带最少量的必要信息(如消息数发送方等信息),当用户实际点击时在异步获取具体的消息内容。

以Android的推送为例。这个为我厂先产品的一个实现。传递通知类型,以及用户id,然后在解析完成后在推送到通知中心。类似上面所说的携带最少量必要信息,然后异步获取具体呈现内容。

再说具体的通知信息如何呈现。
首先,存储中保存的信息必然不是最终呈现给用户的信息。给用户呈现的信息应当是在service层或者在页面组装的。存储还是保存基本数据信息,比如说具体评论内容、时间、图片链接等。

昨天晚上比较晚,思路不是很清晰。现在再做下补充。

上面提到的方法是一。还有就是和view层(web、app)协定好具体的消息格式,然后还是在service层完成消息组装。
以iOS推送为例:iOS的推送因为是要遵从Apple的APNs的协议,alter是alter,badge是badge,需要传递给app的,则封装在custom中。web也可以类似,协定好具体的通知格式,然后在web层判断并呈现。

我目前就是这样的,,现在要推送给用户的信息,
这个信息分为各种各样的,, 如果用redis来存储呢 ? 再者如何读取用户没有读取过的消息记录呢??

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1671
14
CakePHP 教程
1428
52
Laravel 教程
1331
25
PHP教程
1276
29
C# 教程
1256
24
session_start()函数的意义是什么? session_start()函数的意义是什么? May 03, 2025 am 12:18 AM

session_start()iscucialinphpformanagingusersessions.1)ItInitiateSanewsessionifnoneexists,2)resumesanexistingsessions,and3)setsasesessionCookieforContinuityActinuityAccontinuityAcconActInityAcconActInityAcconAccRequests,EnablingApplicationsApplicationsLikeUseAppericationLikeUseAthenticationalticationaltication and PersersonalizedContentent。

给MySQL表添加和删除字段的操作步骤 给MySQL表添加和删除字段的操作步骤 Apr 29, 2025 pm 04:15 PM

在MySQL中,添加字段使用ALTERTABLEtable_nameADDCOLUMNnew_columnVARCHAR(255)AFTERexisting_column,删除字段使用ALTERTABLEtable_nameDROPCOLUMNcolumn_to_drop。添加字段时,需指定位置以优化查询性能和数据结构;删除字段前需确认操作不可逆;使用在线DDL、备份数据、测试环境和低负载时间段修改表结构是性能优化和最佳实践。

如何使用MySQL的函数进行数据处理和计算 如何使用MySQL的函数进行数据处理和计算 Apr 29, 2025 pm 04:21 PM

MySQL函数可用于数据处理和计算。1.基本用法包括字符串处理、日期计算和数学运算。2.高级用法涉及结合多个函数实现复杂操作。3.性能优化需避免在WHERE子句中使用函数,并使用GROUPBY和临时表。

怎样卸载MySQL并清理残留文件 怎样卸载MySQL并清理残留文件 Apr 29, 2025 pm 04:03 PM

要安全、彻底地卸载MySQL并清理所有残留文件,需遵循以下步骤:1.停止MySQL服务;2.卸载MySQL软件包;3.清理配置文件和数据目录;4.验证卸载是否彻底。

Laravel 最佳扩展包推荐:2024 年必备工具 Laravel 最佳扩展包推荐:2024 年必备工具 Apr 30, 2025 pm 02:18 PM

2024年必备的Laravel扩展包包括:1.LaravelDebugbar,用于监控和调试代码;2.LaravelTelescope,提供详细的应用监控;3.LaravelHorizon,管理Redis队列任务。这些扩展包能提升开发效率和应用性能。

MySQL在macOS系统的安装步骤详解 MySQL在macOS系统的安装步骤详解 Apr 29, 2025 pm 03:36 PM

在macOS上安装MySQL可以通过以下步骤实现:1.安装Homebrew,使用命令/bin/bash-c"$(curl-fsSLhttps://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"。2.更新Homebrew,使用brewupdate。3.安装MySQL,使用brewinstallmysql。4.启动MySQL服务,使用brewservicesstartmysql。安装后,可通过mysql-u

MySQL批量插入数据的高效方法 MySQL批量插入数据的高效方法 Apr 29, 2025 pm 04:18 PM

MySQL批量插入数据的高效方法包括:1.使用INSERTINTO...VALUES语法,2.利用LOADDATAINFILE命令,3.使用事务处理,4.调整批量大小,5.禁用索引,6.使用INSERTIGNORE或INSERT...ONDUPLICATEKEYUPDATE,这些方法能显着提升数据库操作效率。

作曲家:PHP开发人员的软件包经理 作曲家:PHP开发人员的软件包经理 May 02, 2025 am 12:23 AM

Composer是PHP的依赖管理工具,通过composer.json文件管理项目依赖。1)解析composer.json获取依赖信息;2)解析依赖关系形成依赖树;3)从Packagist下载并安装依赖到vendor目录;4)生成composer.lock文件锁定依赖版本,确保团队一致性和项目可维护性。

See all articles