TRPG Engine —— 一个功能完善即时通讯解决方案

moonrailgun:上一次推广: /t/708243

项目背景

除了传统的聊天软件,还有为固定需求打造的定位其他的聊天软件

比如钉钉立足于工作流,slack 专注于程序员之间的项目沟通。而TRPG Engine就是一款为了小众的跑团玩家所打造的通用即时通讯解决方案

项目亮点

  • 基于 XML 描述的人物卡系统(可以理解为动态表单) - Playground
  • Web 端与 RN 端共享 redux 状态的实践与工具链
  • 多端并存与代码共享(Web 端, RN 端, Portal 端 (Portal 端是 RN 端通过 webview 进行一部分中间操作的方式,类似于各种手机 App 的 H5 端) )
  • 其他的一些自研实用工具,如RN 端 WEB 端通用 Portal 组件, 快速生成通用表单, 基于 BBCode 的消息解释器, 通用缓存管理机制
  • 工程化代码,可拓展性强
  • 移动端兼容与 PWA

依赖

  • MySql 5.7+
  • Redis

功能列表

通用功能

  • 用户登入登出
  • 用户注册
  • 私聊 /群聊
  • 头像上传与裁剪
  • 用户设置
  • 好友管理
    • 好友发送邀请 /同意邀请
  • 基于 BBCode 的消息解析器
    • url 内容
    • 图片内容
    • @提及
  • 多种消息类型
    • 通用消息
    • 提示消息
    • 卡片消息
  • 消息回复与消息撤回
  • 自动抓取消息内的网址的预览信息
  • 基于 slate 的富文本编辑器
  • 消息通知
    • 移动端基于upush。包括本地进程未被杀死的本地推送与本地被杀死后的 upush 推送
  • 多种文件管理策略
    • 头像上传七牛云或本地
    • 聊天图片使用外置图片服务转发到第三方图床
    • 聊天文件存储在本地,定时删除
  • 单向聊天消息机器人
  • 群组多面板
    • 多面板类型: 目前有笔记面板与文字频道
    • 面板的编辑 /删除 /拖拽排序
  • app 热更新与 apk 更新
    • 热更新基于自部署的codepush服务器, apk 更新会自动获取最新的 apk 版本
  • app 下载管理
  • 多国语言(中英, 尚未完全覆盖)

跑团相关

  • 基于 Slate 的笔记系统
  • 人物卡系统
    • 基于 XML 的布局描述与内置 JS 沙盒解释器来解释 js 脚本
    • 人物卡的切换与切换时发送消息变换头像与名字
    • 人物卡分享与 Fork
  • 投骰表达式与消息拦截器
  • 输入时向所有人发送输入状态
  • 在线招募系统

线上监控

  • 计划任务记录
  • 接口耗时统计
  • 请求限流
  • 系统日志: 日志会被转发到loggly或本地记录。其他的操作相关会存储到数据库
    • 用户登录记录
    • 机器人记录
    • 投骰记录
    • oss 文件记录
  • 登录 /注册统计汇总
  • 前端后端错误汇报

项目规模

  • 开发时间: 3 年
  • 所用数据表: 61 张
  • 功能完整的多端:
    • 两版网页端
    • 基于 React Native 的安卓端

预览

TRPG Engine —— 一个功能完善即时通讯解决方案

在线地址: https://trpg.moonrailgun.com/
开源地址: https://github.com/TRPGEngine/Client

chinvo:其实……完全可以用 xmpp 的,xmpp 支持自定义消息,只要写客户端的部分就行

moonrailgun:@chinvo 只写客户端有什么好处么。

xmt328:我需要一个大佬带着玩,还需要足够的朋友来陪我玩

TRPG Engine —— 一个功能完善即时通讯解决方案

moonrailgun:上一次推广: /t/708243 项目背景 除了传统的聊天软件,还有为固定需求打造的定位其他的聊天软件 比如钉钉立足于工作流,slack 专注于程序员之间的项目沟通。而TRPG Engine就是一款为了小众的跑团玩家所打造的通用即时通讯解决方案 项目亮点 基于 XML 描述的人物卡系统(可以理解为动态表单) - Playground …

TRPG Engine —— 一款专为跑团而生的即时通讯软件 Typescript + React + React Native

moonrailgun:TRPG Engine - 一个专为 TRPG 打造的即时即时通讯应用 简单的来说就是类似于钉钉, Slack, Discord 那种以即时通讯为核心,以其他的业务需求为辅助而制作的功能性聊天软件。 已经独立开发 3 年, 第一次来 V 站宣传。如有不足请轻喷。 官方文档: https://trpgdoc.moonrailgun.co…

engine 和 engien 有什么区别?

bantianyinshi17:engien 出现在 https://baike.baidu.com/item/%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F/5985445 正文的第二行末尾 ---> 引擎 engienBrettD:百度百科拼错了… iamwho:engine = 引擎engien = 引檠 bantian…

如何在Google App Engine(Java)中创建Excel文件? - java

谷歌搜索了两天后,这个问题似乎对Python有很多选择,但对Java没有任何选择。到目前为止,我真的真的可以使用一些帮助,推荐使用gaeVFS从xml组件中构建一个excel文件,然后将其全部压缩在一起,听起来像是一巴掌。哦,是的,如果您想知道我是在问我使用Java而不是python的问题,但是在5,000行代码的情况下,现在就回头吧……您可能会发现有用的其…

泽西岛App Engine:实体验证不起作用 - java

我正在使用Google App Engine,Jersey,Objectify和Gson(以及其他一些小型库)构建应用程序。我想使用@Valid批注在资源中进行验证。但是,似乎没有执行任何实际的验证。特别是,当将Entry设置为payee的"123"设置为/entries和/entries/nocheck时,应用程序不会引发任何异常,并且…