ð•»ð»介绍
大家好,我的夏天为我学习了,我在rocket.chat中的Google Summer of Code的开源方面有很棒的学习经验。这篇博客文章包含了我在GSOC期间为我开发Rocket.Chat的终端用户界面客户端的所有工作的报告。
项目链接-https://github.com/RocketChat/rocketchat-tui
ð项目摘要
我项目的目的是开发一个有吸引力的,轻巧且易于使用的coart.chat,专门为极客制作。它是在Golang开发的,使用Bubbletea和Charm提供的Lipgloss包装。通过使用Bubbletea,我们可以使用其不同的软件包制作有吸引力的终端用户界面。
使用Rocket Chat Go SDK与Rocketchat API和数据库进行通信,以获取TUI所需的所有其余和实时API。在SDK中为TUI特定用例开发单独的API或添加一些API的新版本。
实施
- 首先,在与导师讨论后,我开始研究终端中的基本TUI,并使用Rocket Chat Web客户端的一些基本功能。首先,我设计了主聊天TUI。我在帆布上设计了它们。可以查看here.
- 了解Rocket.Chat Server的工作和Go SDK的工作,以便我可以在TUI中使用它,我读取其主服务器代码和开发人员文档。我知道Rocket.Chat Server使用MeteOrjs,因此我读了有关它的工作原理。您可以从here.阅读Rocket聊天开发人员文档中有关REST和REALTIME API的MeteOrjs阅读有关我需要并在Postman中尝试的Realtime API的信息。
- 要使用Bubbletea开发TUI,我从原始的github repo.中读到了有关它的用法TUI中所需的功能。阅读使用它做出的不同项目的代码库,最有助于我理解它。
- 我首先根据设计开发了终端UI。我使用Bubbletea和Lipgloss和一些占位符文字在Golang中制作了它。这样我就可以处理GO SDK的TUI所需的特定API。
- 我学会了如何在项目中使用本地GO软件包,以便可以测试我在TUI中在GO SDK中开发的本地API。
- 我添加了TUI侧边栏中的频道列表,添加消息发送,在频道之间切换并加载先前的消息历史记录。
- 我在聊天中添加了实时发送和接收消息。
- 我添加了用户登录屏幕,添加了用户令牌的缓存,使用缓存令牌和令牌到期的登录。
- 我在发送消息时添加了列表,过滤,发送slash命令和 @提及频道成员。
- 我添加了一个标志来在启动TUI时给予服务器URL值,以便我们可以从任何服务器聊天,以便将所有请求发送到它。
- 删除我在添加不同功能,清理代码,添加注释和更新读数的一些错误中遇到的一些错误,并使用有关如何运行TUI的说明。
演示视频
ð使用的工具和技术
- Golang
- Bubbletea Go包
- lipgloss go软件包
- meteojs
- boltdb go软件包
- Postman
- canva
挑战
- 如何管理TUI的完整流量和状态 - 它是使所有内容保持同步的最具挑战性的部分。我是新手使用的框架,因此了解更多有关它的信息,如何在其他项目中使用并保持简单。
- 添加实时消息发送和接收 - 制作一些POC应用程序。阅读Bubbletea和Rocket.Chat的开发人员文档。了解使用Bubbletea制造的项目的代码库。
- 显示过去的消息历史记录 - 搜索并尝试如何在其他rocket.chat平台上实现。检查其端点,阅读开发人员文档中不同端点,然后在SDK中添加它。
- 添加slash命令和 @ user提及 - 涵盖边缘案例何时显示列表,何时隐藏它,何时过滤它以及何时选择它。调试在其开发过程中出现的一些意外错误。
ð»捐款
- 公关
主题 | 链接 |
---|---|
[new]完成TUI V1 [合并] | https://github.com/RocketChat/rocketchat-tui/pull/5 |
[new]添加了REST功能,以列出所有Slash命令[合并] | https://github.com/RocketChat/Rocket.Chat.Go.SDK/pull/61 |
[新] REST功能以获取组成员[合并] | 的成员列表https://github.com/RocketChat/Rocket.Chat.Go.SDK/pull/66 |
[新]在搜索用户和房间中添加了功能,同时在消息中提及[在评论中] | https://github.com/RocketChat/Rocket.Chat.Go.SDK/pull/69 |
在用户[合并]中添加了名称字段映射] | https://github.com/RocketChat/Rocket.Chat.Go.SDK/pull/63 |
修改的DM,组,频道历史函数[合并] | https://github.com/RocketChat/Rocket.Chat.Go.SDK/pull/65 |
更改了时间的格式,以使其得到正确解析[正在评论] |
https://github.com/RocketChat/Rocket.Chat.Go.SDK/pull/67 |
- 问题开放
问题 | 链接 |
---|---|
在tui [封闭] | 中实现基本服务https://github.com/RocketChat/rocketchat-tui/issues/2 |
弄清楚如何通过键[封闭] | 在不同部分中处理用户导航以及与不同的bubbletea元素的交互https://github.com/RocketChat/rocketchat-tui/issues/4 |
修复:身份验证问题[关闭] | https://github.com/RocketChat/rocketchat-tui/issues/3 |
添加REST功能以获取组成员列表[闭合] | https://github.com/RocketChat/Rocket.Chat.Go.SDK/issues/64 |
在实时加载象所中获取用户名[封闭] | https://github.com/RocketChat/Rocket.Chat.Go.SDK/issues/62 |
添加用于列表和制作斜线命令的函数[封闭] | https://github.com/RocketChat/Rocket.Chat.Go.SDK/issues/60 |
在缓存中添加过去消息的缓存 | https://github.com/RocketChat/rocketchat-tui/issues/7 |
添加用户搜索功能,同时使用 @提及用户而不是在组成员中搜索 | https://github.com/RocketChat/rocketchat-tui/issues/6 |
在消息列表中添加功能以更新消息 | https://github.com/RocketChat/rocketchat-tui/issues/9 |
添加GO Linter,以保持代码的一致覆盖和格式 | https://github.com/RocketChat/rocketchat-tui/issues/8 |
tui consits -https://github.com/RocketChat/rocketchat-tui/commits/main
ð导师
我为这个项目的令人惊叹的导师是Aaron Ogle(@geekgonecrazy)和Debdut Chakraborty(@debdutdeb)。我真的非常感谢他们在这几周中提供的支持,帮助和引导我,没有他们的这个项目是不可能的。他们是如此善良和理解。我从他们那里学到了很多东西。我扩展了我的项目以添加更多功能,但是由于某些个人情况,我无法对它们进行太多工作,他们在艰难的时期支持了我。我将永远珍惜与他们建立的纽带,永远不会忘记我在GSOC期间与他们度过的时间。
ðÖ实施功能
- 消息的缓存
- 编辑和更新消息
- 添加消息格式
- 添加线程对话
- 创建公共和私人渠道
- 使tui响应
- 添加对表情符号检测和发送的支持。
ð重要链接
主题 | 链接 |
---|---|
开发人员文档 | https://developer.rocket.chat/ |
火箭聊天服务器代码 | https://github.com/RocketChat/Rocket.Chat |
tui代码 | https://github.com/RocketChat/rocketchat-tui |
GO SDK代码 | https://github.com/RocketChat/Rocket.Chat.Go.SDK |
bubbletea by Charm | https://github.com/charmbracelet/bubbletea |
tui公共通信渠道 | https://open.rocket.chat/channel/rocket-chat-text-terminal-client-tui |
eteorjs | https://www.tutorialspoint.com/meteor/index.htm |
tui Design | https://bit.ly/3hWR6VE |
演示呈现 | https://bit.ly/3EN5N6J |
GSOC提案 | https://bit.ly/3tLOE7a |
演示演示视频 |
ð开放捐款
尝试一下,与我分享您的反馈。我很想听听大家的回音。请在GitHub上打开错误报告/问题,以了解您想看到的任何新功能或可能一直面临的问题。
可能与您同在!
去检查一下,如果您喜欢它,请标记
关于我
我是Sitaram Rathi,这是一位专注于后端开发的全栈开发人员。我正在Nit Hamirpur在CSE中追求B.Tech。我喜欢从事项目和问题,这些项目和问题使我突破了极限并学习新知识。您可以在这里与我联系。