• Java 实时论坛


    简介

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

    初衷

    Sym 的诞生是有如下几点原因:

    • 我们想实现一种新的网络社区体验,独立博客+社区互动
    • 大多数论坛用户体验不够现代化,想做一个和聊 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 吧)
    • 先完成本职工作,再用开源的产品/经验来进行工作相关结合与提升
  • 相关阅读:
    [转] jquery作者John Resig编写的微模板引擎:JavaScript Micro-Templating
    【转】一种解决h5页面背景音乐不能自动播放的方案
    [转]JavaScript快速检测浏览器对CSS3特性的支持
    [转]用CSS给SVG <use>的内容添加样式
    【转】【翻译】对响应式SVG的再思考
    用 highlight.js 为文章中的代码添加语法高亮
    转载:[AngularJS系列] 那伤不起的provider们啊~ (Provider, Value, Constant, Service, Factory, Decorator)
    vue项目中遇到的过滤去重
    css 弹性盒
    vue axios用法
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6467836.html
Copyright © 2020-2023  润新知