GSOC的最终报告与火箭聊天TUI
#开源 #go #tui #gsoc

ð•»ð»介绍

大家好,我的夏天为我学习了,我在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的新版本。

实施

  1. 首先,在与导师讨论后,我开始研究终端中的基本TUI,并使用Rocket Chat Web客户端的一些基本功能。首先,我设计了主聊天TUI。我在帆布上设计了它们。可以查看here.
  2. 了解Rocket.Chat Server的工作和Go SDK的工作,以便我可以在TUI中使用它,我读取其主服务器代码和开发人员文档。我知道Rocket.Chat Server使用MeteOrjs,因此我读了有关它的工作原理。您可以从here.阅读Rocket聊天开发人员文档中有关REST和REALTIME API的MeteOrjs阅读有关我需要并在Postman中尝试的Realtime API的信息。
  3. 要使用Bubbletea开发TUI,我从原始的github repo.中读到了有关它的用法TUI中所需的功能。阅读使用它做出的不同项目的代码库,最有助于我理解它。
  4. 我首先根据设计开发了终端UI。我使用Bubbletea和Lipgloss和一些占位符文字在Golang中制作了它。这样我就可以处理GO SDK的TUI所需的特定API。
  5. 我学会了如何在项目中使用本地GO软件包,以便可以测试我在TUI中在GO SDK中开发的本地API。
  6. 我添加了TUI侧边栏中的频道列表,添加消息发送,在频道之间切换并加载先前的消息历史记录。
  7. 我在聊天中添加了实时发送和接收消息。
  8. 我添加了用户登录屏幕,添加了用户令牌的缓存,使用缓存令牌和令牌到期的登录。
  9. 我在发送消息时添加了列表,过滤,发送slash命令和 @提及频道成员。
  10. 我添加了一个标志来在启动TUI时给予服务器URL值,以便我们可以从任何服务器聊天,以便将所有请求发送到它。
  11. 删除我在添加不同功能,清理代码,添加注释和更新读数的一些错误中遇到的一些错误,并使用有关如何运行TUI的说明。

演示视频

Rocket Chat Terminal User interface Demo

ð使用的工具和技术

  • 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

- 问题开放

中实现基本服务 在不同部分中处理用户导航以及与不同的bubbletea元素的交互
问题 链接
在tui [封闭] https://github.com/RocketChat/rocketchat-tui/issues/2
弄清楚如何通过键[封闭] 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响应
  • 添加对表情符号检测和发送的支持。

ð重要链接

ð开放捐款

尝试一下,与我分享您的反馈。我很想听听大家的回音。请在GitHub上打开错误报告/问题,以了解您想看到的任何新功能或可能一直面临的问题。

可能与您同在!

去检查一下,如果您喜欢它,请标记


关于我

我是Sitaram Rathi,这是一位专注于后端开发的全栈开发人员。我正在Nit Hamirpur在CSE中追求B.Tech。我喜欢从事项目和问题,这些项目和问题使我突破了极限并学习新知识。您可以在这里与我联系。