Java 实时论坛 - Sym 1.3.0 发布

简介

Sym 是一个用 Java 写的实时论坛,欢迎来体验git

初衷

Sym 的诞生是有以下几点缘由:github

  • 咱们想实现一种新的网络社区体验,独立博客+社区互动
  • 大多数论坛用户体验不够现代化,想作一个和聊 QQ 同样体验的论坛
  • 已有的用 Java 写的论坛真的不多/丑,而且大多已经再也不维护

基本理念

实时交互

在浏览帖子时,传统论坛都是须要刷新页面来查看回帖的。Sym 在相似的用户交互场景上是基于 WebSocket 技术进行架构的,看帖时不须要刷新页面也能够看到其余人回帖。算法

HTML5

Sym 使用了不少 HTML5 提供的技术特性,好比经过使用本地存储防止编辑帖子/评论时内容丢失;使用了音频特性来进行帖子/评论音频录制;复制/粘贴上传图片等等。数据库

运用这些技术,Sym 可让用户在分享、灌水时更加便捷、舒服 :smirk:浏览器

积分系统

积分系统是全部论坛的基础/标配系统之一吧,好玩是一方面,另外一方面是量化每一个用户的价值。Sym 的积分系统参考了 V2EX 的积分系统,将来将会加入更多动态特性,好比用户阵营汇率、系统运营参数等。服务器

互联

Sym 提供了 API 进行帖子、评论的同步(B3log 构思),目前 Solo 博客系统已经能够完整和 Sym 保持内容同步。网络

功能图解

首页架构

首页使用 Reddit 热帖排序算法,基于用户投票和时间来决定首页内容。另外,列表上面的每篇帖子都有一个小红条,表示该帖的当前热度(实时浏览/评论)。框架

首页

帖子编辑器

帖子

我的设置

我的设置

发布选择

目前有 4 类帖子:

  • 文章:普通的帖子,注重做者分享经验和看法
  • 思绪:记录写做过程,实例请看这里
  • 讨论组:邀请好友进行私密交流,其余用户看不到具体内容和评论
  • 同城广播:发起你所在城市的招聘、Meetup 等

发布选择

发布编辑

  • Markdown 编辑器
  • Chrome 下能够直接粘贴图片,其余浏览器支持拖拽
  • 除了使用文字,也能够在帖子内一键进行录音
  • 支持标准 Emoji 表情
  • 积分打赏

发布编辑

移动端

移动端目前除了不能录音外,其余功能和 PC 端保持一致。

首页

移动端首页

浏览帖子

移动端浏览帖子

评论区

移动端评论区

发布

移动端发布

安装

需求:Maven3+、MySQL5+、Jetty9+

  1. 下载源码
  2. 解压后修改 src/main/resources/local.properties 中的数据库配置,并建立数据库
  3. 可能须要修改 latke.properties 中的端口为容器端口
  4. 可能须要修改 init.properties 中的管理员帐号
  5. 使用 mvn install 进行构建
  6. 部署到 Servlet 容器的 ROOT 下并启动容器,数据库表会在第一次启动时自动创建

注意:

  • 只能部署到 ROOT 中,线上环境建议使用反向代理

配置

  • 图片上传使用的是七牛,须要配置 symphony.properties 中的 qiniu.* 属性
  • 邮件发送使用的是 SendCloud,须要配置 symphony.properties 中的 sendcloud.* 属性

用户注册时是启用邮件验证的,若是须要修改请参考相关代码。

商用受权

请看这里

思绪

在实现 B3log 构思的这几年:

  • 咱们见证了 xAE(GAE/BAE/SAE/etc)的兴起与没落。2009 年选择了 GAE 做为服务器,并开始实现 Latke 框架来解决跨云平台,直到今年告别 GAE,不得不感叹技术更迭之快
  • 感觉到了自造轮子的优缺点,而且能够确定一点:对于一个想要长久的产品来讲,自制技术框架优点远大于劣势
  • 一个好玩的产品或说是细节特性然并卵,须要作的是一个可以持续提供用户价值的产品/特性
  • 虽然直到目前 B3log 系产品用户很少,但咱们已经初步证实了:Java 用来实现博客、论坛没有什么很差的(仅次于 PHP 吧)
  • 先完成本职工做,再用开源的产品/经验来进行工做相关结合与提高
相关文章
相关标签/搜索