Sym 使用 tomcat 服务器,就不显示在线人数了。

本贴最后更新于 444 天前,其中的信息可能已经天翻地覆

Sym 使用的 WebSocket 好像和 Jetty 容器耦合了,删除了 Jetty 和 WebSocket 就没办法显示在线人数,要自己改代码重新实现一下这个功能吗?

  • Sym

    Sym 是一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)系统平台,“下一代的社区系统,为未来而构建”。

    489 引用 • 4449 回帖 • 650 关注
  • Tomcat

    Tomcat 最早是由 Sun Microsystems 开发的一个 Servlet 容器,在 1999 年被捐献给 ASF(Apache Software Foundation),隶属于 Jakarta 项目,现在已经独立为一个顶级项目。Tomcat 主要实现了 JavaEE 中的 Servlet、JSP 规范,同时也提供 HTTP 服务,是市场上非常流行的 Java Web 容器。

    148 引用 • 524 回帖

赞助商 我要投放

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 88250

    请看 Sym 安装指南 FAQ 部分。

    PS,你把 Sym 打成 Syn 了,我已做修改。

    1 回复
  • cyy3900
    作者

    如何部署在 Tomcat 中

    war 包中删除 WEB-INF/classes/org/b3log/symphony/Starter.class 以及 WEB-INF/lib/jetty-.jar、websocket-.jar、javax-websocket-*.jar 后再部署即可。

    这个删除了所有的 WebSocket 的 jar 包,那 WebSocket 不是运行不起来了。我看着控制台报错了,提示没有运行在 Jetty 里。QQ 截图 20190713215639.png

    1 回复
  • 88250

    你按照文档删完全了么?

    1 回复
  • cyy3900
    作者

    全部删完了。我仔细观察了一下,Jetty 和 Tomcat 环境下都可以显示,只是显示的不准确,进入聊天室一次在线人数会加一,如果多次进出聊天室,人数会一直加一。感觉这个在线人数统计不是特别准确,只是一个大概的在线人数。是不是监听 session,根据 session 判断在线用户更准确,异常退出设置超时时间,超时了也算不在线。有时间我去看下代码怎么实现的。

    1 回复
  • 88250

    在线数是按用户实时打开的页签数进行统计的。

    1 回复
  • cyy3900
    作者

    哦,如果不打开页签那就不准确了。我登录了三个用户,不做其他操作,显示在线人数 0。

    1 回复
  • 88250

    登录后如果窗口开着的话那应该会有计数才对,如果没有的话可能是代码有 bug。

    2 回复
  • cyy3900 1 评论
    作者

    代码实现的时候好像是打开 WebSocket 连接的时候去统计在线用户人数。

    如果没有 WebSocket 连接计数就是 0。
    cyy3900
  • cyy3900
    作者

    是不是专门写一个 session 监听器去统计在线人数更准确呢?如果 WebSocket 的打开就关闭了,或者直接没有 socket 连接,那就没办法统计在线人数了。

    1 回复
  • 88250

    ws 打开 +1,关闭 -1,非常准确的嘛。

请输入回帖内容 ...