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 吧)
  • 先完成本職工做,再用開源的產品/經驗來進行工做相關結合與提高
相關文章
相關標籤/搜索