一种桌面宠物跨设备消息传输方法及系统与流程
本发明涉及计算机通信,尤其涉及一种桌面宠物跨设备消息传输方法及系统。
背景技术:
1、桌面宠物程序是运行于用户操作系统桌面层的应用程序,通常以持有悬浮窗权限的悬浮窗为载体,在桌面之上呈现虚拟形象,并与用户进行轻量交互。现有桌面宠物程序多为单机应用,其功能局限于本地展示与本地交互,不同用户设备上的桌面宠物之间缺乏直接的消息互通能力。
2、若使不同用户的桌面宠物之间能够互相传递简短消息,现有技术通常采用如下两类方案:其一,在应用中嵌入通用即时通讯软件开发工具包或接入现有聊天平台;此类方案要求用户注册账号、维护复杂的账号体系,客户端资源占用高,且服务器集中存储用户的聊天记录,与桌面宠物轻量化、隐私敏感的应用定位不符。其二,客户端周期性轮询服务器接口拉取消息;此类方案时延高,且频繁的轮询请求消耗服务器与客户端资源。
3、采用长连接推送虽然能够解决时延问题,但在桌面宠物这一应用场景下仍存在以下技术问题:第一,桌面宠物程序运行于用户个人设备上,用户不愿为此注册账号,如何在不要求用户注册账号的前提下,为设备建立可信的身份标识并建立受控的好友关系;第二,生产环境中长连接通常经反向代理服务器转发,连接空闲时长超过反向代理的读超时时长即被断开,导致推送通道中断;第三,接收方离线时消息如何暂存并在其上线时可靠补投;第四,在短消息场景下,如何防止恶意刷屏、异常大帧等攻击对服务器造成冲击。
4、因此,需要一种适配桌面宠物应用场景的轻量跨设备消息传输方案。
技术实现思路
1、针对上述技术问题,本发明提供一种桌面宠物跨设备消息传输方法及系统,实现在无需用户注册账号的前提下建立设备身份与好友关系,并保证消息推送的可靠性、稳定性与安全性。
2、第一方面,本发明提供一种桌面宠物跨设备消息传输方法,应用于消息服务器,所述消息服务器与多个客户端之间分别维持长连接,所述方法包括:响应于第一客户端经长连接发送的注册请求,生成由预设字符集中的字符随机组成的定长好友码以及与该好友码对应的密钥,将所述好友码与所述密钥作为用户记录存储,并将所述好友码与所述密钥返回至所述第一客户端;响应于所述第一客户端发送的登录请求,对所述登录请求携带的密钥与所述用户记录中存储的密钥执行恒定时间比较校验,校验通过后将该好友码与当前长连接绑定;当已存在绑定同一好友码的历史连接时,关闭所述历史连接而保留最新连接;接收所述第一客户端发送的喊话消息,所述喊话消息携带有目标好友码与消息文本;对所述消息文本按unicode字符数执行长度校验,长度超过预设字符数上限时拒绝转发;校验发送方好友码与所述目标好友码之间是否存在好友关系记录,不存在时拒绝转发;在校验通过时,查询所述目标好友码是否绑定有在线连接;若是,将携带有发送方好友码、发送方昵称、所述消息文本与时间戳的喊话数据经所述在线连接即时转发;若否,将所述喊话数据作为离线消息写入离线消息表;响应于作为接收方的第二客户端的登录请求且校验通过,从所述离线消息表中读取发给该第二客户端好友码的全部离线消息,并在读取后将所读取的离线消息从所述离线消息表中删除,随登录成功响应一并推送至所述第二客户端。
3、进一步地,所述预设字符集为去除字形易混淆字符的字母数字字符集,所述字形易混淆字符至少包括与数字字形相近的字母;所述好友码为自所述预设字符集中随机选取并经用户记录查重后得到的六位字符串。
4、进一步地,好友关系的建立采用申请许可机制:响应于第一客户端向目标好友码发送的好友申请,在申请关系表中记录一条待处理申请,并向所述目标好友码推送申请通知;响应于所述目标好友码对应的客户端返回的同意指令,建立以两个好友码排序后作为联合主键的好友关系记录,并向双方推送好友建立通知;当所述目标好友码已存在指向所述第一客户端好友码的待处理申请时,直接建立所述好友关系记录而无需再次确认;当重复收到同一对好友码之间方向相同的好友申请时,不再向目标好友码二次推送申请通知。
5、进一步地,所述方法还包括在线状态维护:任一好友码的客户端登录成功后,向该好友码的全部在线好友推送上线通知;任一长连接断开或被关闭后,向该好友码的全部在线好友推送下线通知;客户端变更昵称后,向其全部在线好友推送携带新昵称的更新通知。
6、进一步地,对所述离线消息表执行双重清理:以接收方好友码为单位统计离线消息条数,超过单用户条数上限时按写入时间淘汰最旧的离线消息;离线消息自写入时起超过预设保留天数的记录被删除。
7、进一步地,所述方法还包括连接保活与流量防护:按预设心跳间隔向全部在线连接周期性发送心跳消息,所述心跳间隔小于所述消息服务器前置的反向代理连接读超时时长,使所述反向代理在空闲时保持所述长连接不中断;对每条接收到的消息帧执行字节数上限校验,超过上限的消息帧被拒绝处理。
8、进一步地,所述方法还包括对喊话频率的滑动窗口限频:以发送方好友码为单位维护时间戳队列,剔除超出时间窗口的旧时间戳后,当队列内时间戳数量达到预设次数上限时,拒绝该发送方的喊话转发。
9、第二方面,本发明提供一种桌面宠物跨设备消息传输系统,包括运行于至少两个客户端设备的桌面宠物程序和消息服务器;所述客户端设备上的桌面宠物程序经长连接与所述消息服务器通信,并将接收到的喊话数据以对话框气泡的形式呈现于桌面宠物形象;所述消息服务器包括:注册模块,用于生成好友码与密钥并建立用户记录;鉴权模块,用于对登录请求携带的密钥执行恒定时间比较校验,并处理同一好友码重复登录时的旧连接关闭;校验模块,用于对喊话消息执行消息文本长度校验、好友关系校验与发送频率校验;转发模块,用于在目标好友码在线时经其长连接即时转发喊话数据;离线存储模块,用于在目标好友码离线时将喊话数据写入离线消息表,并在目标好友码登录时读取后删除。
10、第三方面,本发明提供一种电子设备,包括处理器和存储器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时实现如第一方面所述的方法。
11、第四方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的方法。
12、本发明的有益效果包括:(1)无需用户注册账号,服务器分配好友码与密钥即构成设备身份,密钥校验采用恒定时间比较,避免时序侧信道泄露,兼顾易用性与安全性;(2)消息在线时即时转发、离线时暂存并在登录补投后即行删除,服务器不留存聊天记录,隐私友好且存储开销低;(3)心跳间隔小于反向代理读超时时长,长连接在经反向代理转发的生产部署环境下保持稳定不中断;(4)消息文本长度、好友关系、发送频率与消息帧字节数多重校验,有效抵御恶意刷屏与异常帧攻击;(5)好友关系采用申请许可机制,配合重复申请去重,避免陌生人骚扰。
1.一种桌面宠物跨设备消息传输方法,其特征在于,应用于消息服务器,所述消息服务器与多个客户端之间分别维持长连接,所述方法包括:响应于第一客户端经长连接发送的注册请求,生成由预设字符集中的字符随机组成的定长好友码以及与该好友码对应的密钥,将所述好友码与所述密钥作为用户记录存储,并将所述好友码与所述密钥返回至所述第一客户端;响应于所述第一客户端发送的登录请求,对所述登录请求携带的密钥与所述用户记录中存储的密钥执行恒定时间比较校验,校验通过后将该好友码与当前长连接绑定;当已存在绑定同一好友码的历史连接时,关闭所述历史连接而保留最新连接;接收所述第一客户端发送的喊话消息,所述喊话消息携带有目标好友码与消息文本;对所述消息文本按unicode字符数执行长度校验,长度超过预设字符数上限时拒绝转发;校验发送方好友码与所述目标好友码之间是否存在好友关系记录,不存在时拒绝转发;在校验通过时,查询所述目标好友码是否绑定有在线连接;若是,将携带有发送方好友码、发送方昵称、所述消息文本与时间戳的喊话数据经所述在线连接即时转发;若否,将所述喊话数据作为离线消息写入离线消息表;响应于作为接收方的第二客户端的登录请求且校验通过,从所述离线消息表中读取发给该第二客户端好友码的全部离线消息,并在读取后将所读取的离线消息从所述离线消息表中删除,随登录成功响应一并推送至所述第二客户端。
2.根据权利要求1所述的方法,其特征在于,所述预设字符集为去除字形易混淆字符的字母数字字符集,所述字形易混淆字符至少包括与数字字形相近的字母;所述好友码为自所述预设字符集中随机选取并经用户记录查重后得到的六位字符串。
3.根据权利要求1所述的方法,其特征在于,好友关系的建立采用申请许可机制:响应于第一客户端向目标好友码发送的好友申请,在申请关系表中记录一条待处理申请,并向所述目标好友码推送申请通知;响应于所述目标好友码对应的客户端返回的同意指令,建立以两个好友码排序后作为联合主键的好友关系记录,并向双方推送好友建立通知;当所述目标好友码已存在指向所述第一客户端好友码的待处理申请时,直接建立所述好友关系记录而无需再次确认;当重复收到同一对好友码之间方向相同的好友申请时,不再向目标好友码二次推送申请通知。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括在线状态维护:任一好友码的客户端登录成功后,向该好友码的全部在线好友推送上线通知;任一长连接断开或被关闭后,向该好友码的全部在线好友推送下线通知;客户端变更昵称后,向其全部在线好友推送携带新昵称的更新通知。
5.根据权利要求1所述的方法,其特征在于,对所述离线消息表执行双重清理:以接收方好友码为单位统计离线消息条数,超过单用户条数上限时按写入时间淘汰最旧的离线消息;离线消息自写入时起超过预设保留天数的记录被删除。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括连接保活与流量防护:按预设心跳间隔向全部在线连接周期性发送心跳消息,所述心跳间隔小于所述消息服务器前置的反向代理连接读超时时长,使所述反向代理在空闲时保持所述长连接不中断;对每条接收到的消息帧执行字节数上限校验,超过上限的消息帧被拒绝处理。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括对喊话频率的滑动窗口限频:以发送方好友码为单位维护时间戳队列,剔除超出时间窗口的旧时间戳后,当队列内时间戳数量达到预设次数上限时,拒绝该发送方的喊话转发。
8.一种桌面宠物跨设备消息传输系统,其特征在于,包括运行于至少两个客户端设备的桌面宠物程序和消息服务器;所述客户端设备上的桌面宠物程序经长连接与所述消息服务器通信,并将接收到的喊话数据以对话框气泡的形式呈现于桌面宠物形象;所述消息服务器包括:注册模块,用于生成好友码与密钥并建立用户记录;鉴权模块,用于对登录请求携带的密钥执行恒定时间比较校验,并处理同一好友码重复登录时的旧连接关闭;校验模块,用于对喊话消息执行消息文本长度校验、好友关系校验与发送频率校验;转发模块,用于在目标好友码在线时经其长连接即时转发喊话数据;离线存储模块,用于在目标好友码离线时将喊话数据写入离线消息表,并在目标好友码登录时读取后删除。
9.一种电子设备,其特征在于,包括处理器和存储器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的方法。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com