首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Postgres中选择当前用户id未读的聊天消息

,可以通过以下步骤实现:

  1. 首先,需要创建一个名为"messages"的表,用于存储聊天消息的相关信息。表结构可以包括字段如下:
    • id:消息的唯一标识符
    • sender_id:发送者的用户id
    • receiver_id:接收者的用户id
    • message:消息内容
    • is_read:标识消息是否已读的字段,可以使用布尔类型(true表示已读,false表示未读)
    • 可以使用以下SQL语句创建该表:
    • 可以使用以下SQL语句创建该表:
  • 当有新的聊天消息发送时,可以使用以下SQL语句插入一条新的消息记录:
  • 当有新的聊天消息发送时,可以使用以下SQL语句插入一条新的消息记录:
  • 其中,sender_id_value为发送者的用户id,receiver_id_value为接收者的用户id,message_value为消息内容。
  • 要选择当前用户id未读的聊天消息,可以使用以下SQL查询语句:
  • 要选择当前用户id未读的聊天消息,可以使用以下SQL查询语句:
  • 其中,current_user_id为当前用户的id。
  • 这条查询语句将返回所有接收者为当前用户id且未读的聊天消息记录。

以上是在Postgres中选择当前用户id未读的聊天消息的基本步骤。在实际应用中,可以根据具体需求进行进一步的优化和扩展。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

uni-app+php+workman实现简单聊天功能之聊天模块封装

_当前用户id_聊天对象id) 2.2存储当前聊天列表 (key=chatlist_当前用户id) 将当前聊天会话消息列表置顶,更新最后一条消息,更新时间 如下图 场景二 当前用户不处于聊天界面如...chatdetail_当前用户id_发送消息用户id) 2.2存储当前聊天列表 (key=chatlist_当前用户id) 将接受到消息消息列表置顶,更新最后一条消息,更新时间,更新tabbat...id) 将当前会话置顶在消息列表置顶,更新最后一条消息,更新时间 1.3请求ajax发送消息 1.4渲染到页面 读取消息 写入本地存储 chatlist_当前用户id:获取将当前会话读书清零...该函数用于获取信息,当用户离线时接受到消息暂存在服务端缓存,当用户重新上线时触发该函数获取到消息并广播事件UserChat使页面获取到消息 Message > __UpdateChatdetail...+'_'+userid, data:JSON.stringify(list) }) }, 该函数存储当前用户与某位用户聊天记录,这里分两种情况接受消息和发送消息都要将消息存储,Message

4.4K40

如何设计一个亿级消息 IM 系统

通常在IM系统消息会有以下几类:文本消息、表情消息、图片消息、视频消息、文件消息等等 会话 :通常指两个用户之间因聊天而建立起关联 群 :通常指多个用户之间因聊天而建立起关联 终端 :指用户使用...通常有Android端、iOS端、Web端等等 读数 :指用户还没消息数量 用户状态 :指用户当前是在线、离线还是挂起等状态 关系链 :是指用户用户之间关系,通常有单向好友关系、双向好友关系...用户级别递增:指消息ID只保证单个用户是递增,不同用户之间不影响并且可能重复。典型代表:微信。...对于扩散来说,消息ID使用连续递增就是一种不错方式了。如果使用单调递增的话当前消息需要带上前一条消息ID(即聊天消息组成一个链表),这样,才能判断消息是否丢失。...这种方式前端处理会比较麻烦一点,而且聊天过程接收方历史消息列表可能会在中间插入一条消息,这样会很奇怪,而且用户可能会漏消息

3K53
  • 快给你软件加IM聊天功能!

    就我个人而言,很多时候是看到了QQ或者微信App角标,上面显示多少条消息,才打开App,然后通过App里面具体某个联系人后面显示,和当前用户有多少条这个数字,来决定打开哪个联系人聊天页进行查看...上面通过提醒来查看消息环节涉及了两个概念:一个是我有多少条消息,另一个是我和某个联系人有多少条消息。...因此,我们消息读数实现上,一般需要针对用户维度有一个总读数计数,针对某一个具体用户需要有一个会话维度会话计数。...这个具体读数存储可以是IM服务端(如QQ、微博),也可以是接收方本地端上存储(微信),一般来说,需要支持“消息多终端漫游”应用需要在IM服务端进行存储,不需要支持“消息多终端漫游”可以选择本地存储即可...IM服务端接收到发送消息后,还会针对接收方进行读数变更,以提醒用户查看消息消息读数实现上一般分为:用户维度和会话维度会话

    1.7K10

    从新手到专家:如何设计一套亿级消息分布式IM系统

    4.1 扩散 1.png 如上图所示:A与每个聊天的人跟群都有一个信箱(有些博文会叫Timeline,见《现代IM系统聊天消息同步和存储方案探讨》),A查看聊天信息时候需要读取所有有新消息信箱...UidGenerator技术实现》 《IM消息ID技术专题(六):深度解密滴滴高性能ID生成器(Tinyid)》 IM系统需要唯一Id地方主要是: 1)聊天会话ID; 2)聊天消息ID。...用户级别递增:指消息ID只保证单个用户是递增,不同用户之间不影响并且可能重复。典型代表:微信(见《微信海量IM聊天消息序列号生成实践(算法原理篇)》)。...对于扩散来说,消息ID使用连续递增就是一种不错方式了。如果使用单调递增的话当前消息需要带上前一条消息ID(即聊天消息组成一个链表),这样,才能判断消息是否丢失。...这种方式前端处理会比较麻烦一点,而且聊天过程接收方历史消息列表可能会在中间插入一条消息,这样会很奇怪,而且用户可能会漏消息

    3.1K01

    使用腾讯云IM搭建应用内类微信社交聊天模块实践

    腾讯云 IM 层面,每个会话都是一个 V2TIMConversation 类实例,包括了 会话类型 / 会话ID / 用户ID / 群ID / 显示名称 / 头像 / 最后一条消息 / 草稿 / 群聊类型...群聊场景消息回执,通常需要能够查看详情,显示群内哪些人已,哪些人。...当用户点击已回执角标时,可调用 getGroupMessageReadMemberList 方法分页拉取消息群成员列表。...图片图片群内@消息相信大家已经很熟悉,群聊交流过程,如果需要提及或提醒某些群成员,我们可直接 @ 他们。所有的社交聊天软件,都有这个基础功能。当用户输入 @ 字符后,弹出群成员选择界面。...图片图片图片说明:图一:聊天界面监听到输入框输入 "@" 字符后,可跳转到群成员选择界面,选择需要 @ 群成员。图二:群成员选择完成后,重新返回聊天界面,继续编辑群 @ 消息发送。

    8K171

    uni-app+php+workman实现简单聊天功能之交互实现(会话列表)

    前面介绍了【LaravelWebsocket基本使用(Workerman)】 基于workman基础上实现了【uni-app+php+workman实现简单聊天功能之API开发】、【uni-app+...php+workman实现简单聊天功能之聊天模块封装】 接下来完成前后端交互,本文只介绍主要页面和主要代码 我们涉及到页面有主要两个 消息列表页 消息详情页 msg.vue ...return val.userid === data.from_id; }); //如果当前会话存在则更新时间、内容、读数,并进行置顶...页面初始化时候,我们调用getdata获取消息列表数据,从本地存储取到,因为我们收到消息时候会将其存储到本地存储,并进行消息统计。...该组件主要实现列表消息渲染和跳转操作,消息清零 当消息列表被点击时,会跳转到消息详情页并传递对方用户相关参数,进行调用chat模块Read进行消息清零操作 效果图展示 user-chat

    94820

    iOS音视频接入- IM及时通讯基本原理

    消息方式 在线消息,指用户处于online状态时接收到消息;离线消息,指IMSDK非offline状态时收到消息。离线推送使用户pushoffline状态时通过推送方式触达通知。...image.png 消息会话与读数 image.png 消息会话用来区分不同单聊、群聊或聊天室,一般客户端上构造会话列表,通过用户ID,群组ID聊天ID来标记。...除聊天室这种只有在线消息聊天场景外,单聊和群聊都支持离线消息,当用户不在线时,未接收消息会标识为。...消息客户端存在回执机制(已读上报),客户端接受到消息时,需要向服务端发送一条回执,确认已经收到消息,若客户端未发送回执或服务端未收到回执,则服务端会认为该消息未被接收,状态一直为。...若某个会话客户端同时收到多条消息,则上报是只对该回话中最新消息进行已读上报。

    2.3K32

    《redis in action》发布和订阅

    我们让消费者从队列获取数据即可。说白了就是我们前边说消息队列,如果用来描述QQ用户用户聊天,那么用该队列即可,因为list具有顺序,那么消息也就自带了时间特色。...第二种发布和订阅就是多个客户端都要去接受消息了,这种模式就类似QQ群聊。考虑到我们消息不能重复存储,原因是我们用户数量很大,那么消息只能唯一存储,但是用户消息关系就只能通过映射去维护。...这时候A和B显示消息数应该是不一样。所以说我们存储群消息和群的人员关系时候肯定要保留用户所读取到消息位置。当消息位置没有达到现有消息位置时候,应该要进行提示。...所以获取所有群聊数据时候,我们也是按这个规则去寻找所有与本人相关群聊,然后循环去获取群聊消息。当然这块要是考虑消息的话,就是通过websocket去获取消息当前消息位置差来做。...当有群聊成员退出群聊时候,那就需要删除消息和成员消息映射关系。当有新成员加入时候,那就需要新增消息与成员消息映射关系。

    21830

    消息之点不完小红点(Node+Websocket)

    在线用户 这种场景就是相当我们停留在聊天列表页面,当他人在房间中发送消息,我们能够实时看到消息条数增长。 场景示例。 ?...存储Node缓存房间用户列表(此处信息也可以存在Redis) B. 存储Redis消息列表 C. 存储MongoDB消息列表 用户1进入首页。...用户1进入房间,重置用户房间1消息,触发更新模块去更新B消息列表。 用户1向向房间B中发送了一条消息。 后端需要去获取房间用户列表,判断用户是否房间?...是,因为房间中用户已经读取了最新消息,不需要进行计数。 否,若用户不在房间中,更新其消息计数 从缓存获取用户消息进行分发。 用户2登录我们项目,从离线用户变成了在线用户。...用户2登录时,触发查询模块,去获取其当前各个房间消息情况。 查询模块去查询Redis消息,若Redis没有数据,会继续向数据库查询,若没有则返回0给用户

    2.3K30

    Websocket IM聊天教程-教你用GoEasy快速实现IM聊天

    ,显示聊天界面, 如果该好友有消息,红色小气泡显示消息数量。...将该好友本地数据里消息恢复为0。undefined3.4. 并且将聊天记录滚动到最下边。undefined3.5. 如果点击返回,就直接调进入第二步。...本地好友数据里消息加1。undefined5.4. 如果当前界面是好友列表,将来自该朋友消息数字显示界面上。undefined5.5....如果收到消息就是来自当前对话窗口,就将消息显示到聊天窗口,并且调用service将本地数据里该好友消息清0。 用户上下线提醒undefined6.1....整个demo只用到了goeasy四个API subscriber(接收消息),subscriberPrencense(接受上下线通知),hereNowByUserIds(获取当前在线用户列表),

    3.7K00

    实时社群技术专题(二):百万级成员实时社群技术实现(消息系统篇)

    此外:IM聊天广播模式也不能直接复用,因为聊天室架构,每个长链接映射到一个聊天室,因此当你登录到某个聊天时候,你只会收到该聊天消息。...对于其他频道,如果你仅仅需要知道该频道有多少条消息(或者有无消息),则可以选择订阅该频道计数(或者状态),此时服务下发时仅会广播精简消息体用于维护客户端计数,并且当计数达到一定阈值之后...小型IM群组或者多人会话,写扩散模式可以简化设计,但是当群组规模扩大到一定程度(如万人群),扩散就成了选择。...,我们也选择了不同存储方案(历史消息使用分布式时间序列数据库,计数使用分布式 k-v 数据库),最大化地提升消息存储和查询性能和效率。...有写就有,针对读取操作:1)所有最近消息计数均会存储中心化缓存,并通过先进先出和缓存过期等不同策略来确保缓存存储永远是最新和最热数据;2)对于消息 ID消息内容本身,中心化缓存也会有不同数据结构和过期策略

    32220

    简易聊天系统-聊天服务

    大家好,又见面了,我是你们朋友全栈君。 聊天负责私人聊天,群组聊天。私人聊天接受信息后保存至数据库再转发给目标用户。...群组聊天当前没有离线消息保存,也就是用户登录后无法知道多少消息,而是直接拉取指定数量群聊天。...当有成员发送后会将聊天信息存储数据库(没有缓存进redis,因为在线用户会直接发送,目前没有这个优化必要),从redis检索所有群组在线用户并通过消息队列发送至对应网关。...4 * time.Second) // 获取当前时间戳 ti := time.Now().UnixNano() / 1e6 Msgid1 := strconv.FormatInt(ti, 10)...sendmessagereply.MsgType = GroupMessage nowtime := time.Now().UnixNano() / 1e6 // 如果发送时间差值小于2S 选用发送者时间 否则选择后台时间

    2.3K20

    react全家桶 NodeJS MongoDB搭建实时聊天app

    没有的话 直接跳转到登录页 登录这里 对输入用户名和密码做一下校验 然后存储到本地一个用户id 登录返回成功之后dispatch返回数据 触发reducer 将数据存储到state 主页以及切换部分...头部和底部使用共有部分,中间内容使用数组循环渲染不同Route 登录成功之后,有了redirect选项,并且我们Login,设置了路由跳转 {this.props.redirectTo &...传递进来 聊天数据展示 主要是使用socket.io 实现数据通信原理 后端使用express+socketio结合,前端监听端口号9000以后,进行了数据交互和接收 我们每条数据上 加上了其他一些值...根据发收方用户id 进行辨别和数组循环渲染 消息更新 默认每条数据read字段 都是false,筛选聊天数据发送对象是正在使用这个软件时候,筛选出来结果就是消息数量 socket...使用emit触发 on来接受 当接受到一个消息时候 消息加1 当我们从聊天页面退出时候 把这个聊天界面的对方id发送给后端进行处理 将总体消息数量 减去这个id维度消息数量 预览效果

    3.4K20

    Android通知栏微技巧,8.0系统通知栏适配

    那么就目前来说,是没有办法对这些消息做区分,我要么同意接受所有消息,要么就屏蔽所有消息,这是当前通知栏痛点。 那么Android 8.0系统,Google也是从这个痛点开始下手。...每个App都可以自由地创建当前App拥有哪些通知渠道,但是这些通知渠道控制权都是掌握在用户手上用户可以自由地选择这些通知渠道重要程度,是否响铃、是否振动、或者是否要关闭这个渠道通知。...拥有了这些控制权之后,用户就再也不用害怕那些垃圾推送消息打扰了,因为用户可以自主地选择自己关心哪些通知、不关心哪些通知。...显示角标 前面我们提到过,苹果是从iOS 5开始才引入了通知栏功能,那么iOS 5之前,iPhone都是怎么进行消息通知呢?使用就是角标功能,效果如下所示: ?...第二是创建通知时候,调用了setNumber()方法,并传入消息数量。

    2.8K40

    刚刚更新:在线聊天系统设计(原理+思路+源码+效果图) 顶

    后台提供接口列表 |--聊天列表    |--普通用户获取动态聊天列表,目前固定是三位,客服+经理2    |--特殊用户获取用户对自己提问列表 |--聊天回复    |--直接发送消息到后台...communicate.getUserId().equals(userId) && communicate.getStatus() == 1) { // 只查询我消息,过滤我消息 size...+= 1; if (communicate.getUserId().equals(updateStatusUserId)) { // 如果聊天对象一致,则更新状态,并返回消息列表...communicate.getUserId().equals(userId) && communicate.getStatus() == 1) { // 只查询我消息,过滤我消息 size...+= 1; if (communicate.getUserId().equals(updateStatusUserId)) { // 如果聊天对象一致,则更新状态,并返回消息列表

    2.9K20

    IM开发技术分享:浅谈IM系统离线消息、历史消息最佳实践

    用户(即接收方)在下次登录后会全量获取这些离线消息,然后客户端根据聊天会话进行离线消息UI展示(比如显示一个消息气泡等)。...2)历史消息: 历史消息存储了用户所有的聊天消息,这些消息包括发出消息以及接收到消息客户端获取历史消息时,通常是按照会话进行分页获取。...5、IM消息发送及存储流程 以下是我们系统整体消息发送及存储流程:  如上图所示:当用户发送聊天消息到服务器端后,首先会进入到消息系统消息系统会对消息进行分发以及存储。...客户端拉取离线消息信令,需要带上当前客户端缓存消息最大时间戳。...在拉取过程,需要向服务端提交两个参数: 1)对方 ID(如果是单聊的话就是对方 UserID,如果是群则是群组ID); 2)当前会话最前面消息时间戳(即当前会话最老一条消息时间戳)。

    2.2K30

    利用websocket实现web端在线客服实时聊天系统

    .对接收人(发送人)来说,显示最新消息和时间,就意味着显示双方消息记录最后提条消息内容和发送时间 3.消息意味着打开聊天对话框就要告诉对方,自己已对方消息。...这里会产生两种情况: ①己方在线对方未在线,需要在对方上线时(即打开对话框)告诉对方自己已对方消息 解决方案:存储消息数据,自己打开对框时候,获取聊天记录,并将聊天记录对方给自己发消息状态全部更新为已...4.利用mongodb进行用户以及聊天记录存储 效果演示 消息聊天演示: 消息时间演示: 消息演示: 软件需求实现 1.技术架构 PC端:vue+springboot..."0", }); this.scrollAuto(); // 这里是为了做消除用户列表,也就是变为已,告诉后端消息 API["msgRead"]({ sendId: `${ this.sendId...登录系统时存储了cookie <!

    3.8K20

    直播系统聊天技术(七):直播间海量聊天消息架构设计难点实践

    服务落点选择逻辑: 1)聊天室服务聊天上行信令是依据聊天ID 使用一致性哈希算法来选择节点; 2)消息服务:依据用户 ID 使用一致性哈希算法来决定用户具体落在哪个消息服务。...需要注意是:聊天室进行自动销毁时,需先判断当前聊天室是否应该是本节点。如果不是,跳过销毁逻辑,避免 Redis 数据因为销毁逻辑而丢失。...消息服务会检测用户消息拉取情况,聊天室活跃情况下,30s 内人员没有进行拉取或者累计 30 条消息没有拉取,消息服务会判断当前用户已经离线,然后踢出此人,并且同步给聊天室服务对此成员做下线处理。...如果产生新消息用户有拉取中标记: 1)距设置标记时间 2 秒内,则不会下发通知(降低客户端压力,丢弃通知丢弃消息); 2)超过 2 秒则继续下发通知(连续多次通知拉取则触发用户踢出策略,不在此赘述...[10] 网易云信技术分享:IM万人群聊技术方案实践总结 [11] 阿里钉钉技术分享:企业级IM王者——钉钉在后端架构上过人之处 [12] IM群聊消息功能在存储空间方面的实现思路探讨

    2.6K30
    领券