即时通信
文章平均质量分 73
飞鸟真人
这个作者很懒,什么都没留下…
展开
-
BirdTalk 聊天系统 客户端数据库设计
安卓客户端消息存储使用sqlite,数据库结构设计。原创 2024-06-29 16:50:23 · 913 阅读 · 0 评论 -
使用supportFragmentManager管理多个fragment切换
如果我们使用一个activity来创建程序,来用占位符管理多个fragment切换,这里水一篇最简单直接的做法。原创 2024-06-26 15:22:32 · 1065 阅读 · 0 评论 -
vue-advanced-chat 聊天控件的使用
vue-advanced-chat 聊天控件的使用原创 2024-06-25 13:03:45 · 487 阅读 · 0 评论 -
BirdTalk IM集群中消息流转策略讨论
目前群聊的存储策略是1写多读方案;每个群组一个队列,按时间顺序排列,不区分用户;私聊的存储是写扩散的,每个人都有自己的消息队列,按时间顺序 保存所有的消息,不区分会话;原创 2024-06-21 07:51:53 · 700 阅读 · 0 评论 -
python版本使用椭圆曲线执行密钥交换
使用python 写一个秘钥交换的版本原创 2024-06-15 23:06:44 · 275 阅读 · 0 评论 -
Drafty-基于JSON的标记语言来描述聊天内容(代码解释)
函数执行格式化,因为GO格式化后的内容,毕竟不是在android 和 ios 中可以显示的控件中使用,所以和其他版本的格式化不太一样;通过这些类,开发者可以对文本的不同部分应用特定的样式和属性,从而实现类似的效果。使用上述的结构解析之后,fmt也可以转为对应的span,这些span 是一个一个罗列的小片段,这个函数简单的总结就是一个递归函数,对其中的文本进行格式化处理,不过GO确实没有啥可处理的。那么这里的span 不仅仅是并列的关系,而且还是一个树状的关系,这里。中对文本的某些部分应用特定的样式或行为。原创 2024-05-30 15:01:24 · 936 阅读 · 0 评论 -
Drafty-基于JSON的标记语言来描述聊天内容
这份文档介绍了 Drafty,一种由 Tinode 使用的文本格式,用于为消息添加样式。Drafty 的目标是在表达能力足够的同时,不会开放太多的可能性以避免安全问题。你可以将它视为将 JSON 封装了一下的。Drafty 受到了 Facebook 的规范的影响。截至撰写本文时,已经存在和的实现。还有一个,可以将 Drafty 转换为纯文本和预览。这样的好处就是在机器人交互时候可以发送一些格式化的文本,而不仅仅是微信和QQ那种无格式文本;原创 2024-05-29 14:16:29 · 1067 阅读 · 0 评论 -
go使用letteravatar生成圆形透明头像图标
其中把源码放到自己目录下,改其中的函数,将rune类型参数改为string,原创 2024-05-28 09:20:27 · 421 阅读 · 0 评论 -
使用go_concurrent_map 管理 并发更新缓存
在后台服务中,为了提速,我在内存还做了一个告诉缓存来管理用户信息,根据更新通知,或者定时去redis中同步信息,那么在加载或者更新某个用户元素时,要防止并发,这个类在插入时候,可以检测是否存在,并通过回调函数来决定是插入还是更新;这个加锁已经放在插入函数中完成了;2)去数据库或者redis加载;这里就有个并发重复的可能性;1)如果内存缓存没有;3)添加到内存缓存;原创 2024-04-19 09:01:12 · 328 阅读 · 0 评论 -
关于js使用protobuf中的int64的问题
默认情况下,生成的js代码中使用number表示int64,这样在具体交互过程中,数据就不精准;具体可以使用[jstype = JS_STRING] 标记让JS按照字符串处理;原创 2024-04-17 12:21:50 · 446 阅读 · 0 评论 -
浏览器内使用JS和椭圆曲线密钥交换
与之相比,通常使用的其他导出类型包括 "spki"(SubjectPublicKeyInfo)和 "pkcs8"(Private-Key Information Syntax Standard #8)。"spki" 用于导出公钥,"pkcs8" 用于导出私钥。:导出的是 Private-Key Information Syntax Standard #8 结构,包含了私钥的算法标识和私钥本身。备注:公钥可以导出,私钥不允许导出,所以只能生成秘钥之后,保存共享密钥,用指纹来标记;原创 2024-04-16 16:25:40 · 242 阅读 · 0 评论 -
消息存储与同步策略设计
优点:以用户为中心比以会话为中心(tinode)的好处就是消息管理更加容易;每个用户的数据相对集中,可以快速的找到并一次性同步给客户;缺点:数据需要存储2份;优点:群聊使用读扩散,存储数据量少;缺点:读扩散,如果用户反复离线与上线,需要读取离线数据,对scylladb压力比较大;原创 2024-04-02 22:15:24 · 853 阅读 · 0 评论 -
用go实现一个任务调度类 (泛型)
实现了一个简单的任务管理系统,允许用户定义任务和工作者,并将任务分配给工作者进行处理。这个系统旨在提供一个灵活的任务管理框架,可以根据需要动态地添加和移除工作者,以及处理任务。原创 2024-03-24 15:25:41 · 604 阅读 · 0 评论 -
椭圆曲线密钥交换 (Elliptic Curve Diffie-Hellman, ECDH)代替DH秘钥交换
椭圆曲线加密(Elliptic Curve Cryptography,ECC)和迪菲-赫尔曼密钥交换(Diffie-Hellman Key Exchange,DH)都是现代密码学中常用的技术,它们可以用于安全地交换密钥和加密通信。原创 2024-03-23 14:01:14 · 1240 阅读 · 0 评论 -
BirdTalk即时通信协议设计
打算做一个免费、开源、安全的通信服务,便于二次开发使用的。原创 2024-03-19 10:35:04 · 749 阅读 · 0 评论 -
IM服务集群与跨服务器消息路由策略
在单机模式下,相对简单,认为所有的客户都在同一台服务器上,姑且认为1台服务器可以同时支持1万用户在线,在更多用户同时在线时,则需要集群来实现负载均衡。集群的算法需要解决故障处理以及动态添加的问题,同时需要考虑如何在集群节点间路由数据。原创 2024-03-18 14:39:56 · 1340 阅读 · 0 评论 -
使用golang发送邮件
目前大多应用都是手机登录,但是作为开源的一个软件,或者是私有的一个应用,那么使用手机短信接收验证码成本比较高,使用邮箱相对更容易,邮件其实是有格式的,不是随便发一个字符串过去就好了。这里从tinode中取出发邮件的部分做一个测试,如果不报错,就去收件箱接收邮件就好了。原创 2024-01-30 11:14:35 · 797 阅读 · 0 评论 -
使用scyllaDb 或者cassandra存储聊天记录
目前开源的聊天软件主要还是使用mysql存储数据,数据量大的时候比较麻烦;我打算使用scyllaDB存储用户的聊天记录,使用golang开发原创 2024-01-27 13:56:08 · 1360 阅读 · 0 评论