用 Java 实现 500 人及时聊天的功能,是不是只有 WebSocket 这种实现方式呢?求大佬给个思路

2021-01-07 10:21:41 +08:00
 xkxy

如题。

5923 次点击
所在节点    程序员
26 条回复
jiaokang
2021-01-07 10:24:07 +08:00
MQTT
wysnylc
2021-01-07 10:29:04 +08:00
Leigg
2021-01-07 10:34:45 +08:00
当然,不是了,了解一下长连接技术。
woodensail
2021-01-07 10:55:49 +08:00
前端常用的推送方式分 4 种
1:短轮询,也就是定期刷新,实时性无法保证,不适用于 IM
2:长轮询,发起请求后服务端挂起,等有通知后返回数据。前端收到后立刻发起下一次请求。改动较小
3:长连接,发起请求后服务端利用该连接多次返回数据。改动较大
4:websocket,双工通信,体验完爆上面所有。开发难度也不大。
manami
2021-01-07 11:13:27 +08:00
java 直接上 netty
whileFalse
2021-01-07 11:43:27 +08:00
如果你客户端是 web 页面,只能用 websocket (轮询或长链接也能实现,但效果性能差很多)
如果客户端是 native,选择就多很多。
xxxy
2021-01-07 11:57:10 +08:00
500 个 websocket 链接压力不大
yfwl
2021-01-07 11:58:04 +08:00
调用第三方 SDK,万物皆可 API !
lancelock
2021-01-07 12:06:05 +08:00
取决于你客户端
opengps
2021-01-07 12:18:00 +08:00
并没有限制,哪怕用轮训也并不是说不可以。websocket 只是在浏览器端比较轻巧而已。
如果要做的客户端,那么显然直接使用 socket 更方便
难点不在客户端,而在于服务端,怎么支持不限制(高支持≈不限制)客户端数量,各种异常处理,转发消息,头一次接手的人还是有很多细节要处理的
hyxj1229
2021-01-07 12:26:07 +08:00
mango88
2021-01-07 14:19:33 +08:00
openfire
gochat
2021-01-07 14:22:26 +08:00
genal
2021-01-07 14:44:29 +08:00
https://github.com/genaller/genal-chat 有个现成的 web 聊天系统,内网或者带宽够五百人是可以的,fiora 也不错
firechat
2021-01-07 14:50:16 +08:00
IM 要想做好需要花费非常多时间和精力,如果没有办法投入大量人力和时间,最好别自己来开发。可以选用云通讯平台,直接使用他们的 sdk 就行,也可以选择使用我们的 https://github.com/wildfirechat 私有部署,需要有一定的定制开发和运维能力,需要付费,可以先试用后购买。
hantsy
2021-01-07 14:52:05 +08:00
web socket 处理这点小意思啊,不过后面的 Web socket session 处理需要另外缓冲处理( Redis 等)。客户端也容易,Android,WebSocket 都是很容易支持。


简单的 WebSocket 例子:

https://github.com/hantsy/angular-spring-websocket-sample

RSocket 例子:

https://github.com/hantsy/angular-spring-rsocket-sample

SSE+ 普通 HTTP Post (这个比较简单,也容易处理):

https://github.com/hantsy/angular-spring-sse-sample
hantsy
2021-01-07 15:00:00 +08:00
喜欢挑战,可以试用 RSocket,各种语言支持也很好。

https://github.com/rsocket
hantsy
2021-01-07 15:03:44 +08:00
另外对于聊天这种程序,要求即时响应,文本居本,Key/value 数据库是更好的选择。

我开发过一个 Angular+Firebase 项目,Firebase 本身的 JS API 都基于 WebSocket 协议的,所以感觉这也是个不错的选择。Firebase 官方还有专门的 Chat UI 扩展。
chinvo
2021-01-07 15:12:52 +08:00
直接 ejabberd
oxromantic
2021-01-07 15:21:16 +08:00
500 人聊天?自己做还不如花钱一个月 999 有成吨的供应商

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/742431

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX