如题。
我这个系统是web端的,看大家的意思webSocket就够了。
另外问一下,数据存储呢?有什么好的建议嘛?MySql???
1
jiaokang 2021-01-07 10:24:07 +08:00
MQTT
|
2
wysnylc 2021-01-07 10:29:04 +08:00
|
3
Leigg 2021-01-07 10:34:45 +08:00 via iPhone
当然,不是了,了解一下长连接技术。
|
4
woodensail 2021-01-07 10:55:49 +08:00
前端常用的推送方式分 4 种
1:短轮询,也就是定期刷新,实时性无法保证,不适用于 IM 2:长轮询,发起请求后服务端挂起,等有通知后返回数据。前端收到后立刻发起下一次请求。改动较小 3:长连接,发起请求后服务端利用该连接多次返回数据。改动较大 4:websocket,双工通信,体验完爆上面所有。开发难度也不大。 |
5
manami 2021-01-07 11:13:27 +08:00
java 直接上 netty
|
6
whileFalse 2021-01-07 11:43:27 +08:00
如果你客户端是 web 页面,只能用 websocket (轮询或长链接也能实现,但效果性能差很多)
如果客户端是 native,选择就多很多。 |
7
xxxy 2021-01-07 11:57:10 +08:00
500 个 websocket 链接压力不大
|
8
yfwl 2021-01-07 11:58:04 +08:00
调用第三方 SDK,万物皆可 API !
|
9
lancelock 2021-01-07 12:06:05 +08:00
取决于你客户端
|
10
opengps 2021-01-07 12:18:00 +08:00
并没有限制,哪怕用轮训也并不是说不可以。websocket 只是在浏览器端比较轻巧而已。
如果要做的客户端,那么显然直接使用 socket 更方便 难点不在客户端,而在于服务端,怎么支持不限制(高支持≈不限制)客户端数量,各种异常处理,转发消息,头一次接手的人还是有很多细节要处理的 |
11
hyxj1229 2021-01-07 12:26:07 +08:00
|
12
mango88 2021-01-07 14:19:33 +08:00
openfire
|
13
gochat 2021-01-07 14:22:26 +08:00
|
14
genal 2021-01-07 14:44:29 +08:00
https://github.com/genaller/genal-chat 有个现成的 web 聊天系统,内网或者带宽够五百人是可以的,fiora 也不错
|
15
firechat 2021-01-07 14:50:16 +08:00 1
IM 要想做好需要花费非常多时间和精力,如果没有办法投入大量人力和时间,最好别自己来开发。可以选用云通讯平台,直接使用他们的 sdk 就行,也可以选择使用我们的 https://github.com/wildfirechat 私有部署,需要有一定的定制开发和运维能力,需要付费,可以先试用后购买。
|
16
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 |
17
hantsy 2021-01-07 15:00:00 +08:00
|
18
hantsy 2021-01-07 15:03:44 +08:00
另外对于聊天这种程序,要求即时响应,文本居本,Key/value 数据库是更好的选择。
我开发过一个 Angular+Firebase 项目,Firebase 本身的 JS API 都基于 WebSocket 协议的,所以感觉这也是个不错的选择。Firebase 官方还有专门的 Chat UI 扩展。 |
19
chinvo 2021-01-07 15:12:52 +08:00 via iPhone
直接 ejabberd
|
20
oxromantic 2021-01-07 15:21:16 +08:00
500 人聊天?自己做还不如花钱一个月 999 有成吨的供应商
|
21
azuremem 2021-01-07 16:48:56 +08:00
rabbitmq 貌似可以
|
22
iintothewind 2021-01-07 16:53:37 +08:00 via iPhone
|
23
hantsy 2021-01-07 17:25:10 +08:00
@azuremem RabbitMQ + STOMP + SockJS 这是个经典组合。除了 NodeJS 的 SocketIO 外。
|
24
angryfish 2021-01-07 18:40:49 +08:00 via iPhone
500 人,直接短轮询
|
25
Goat121 2021-01-07 23:44:56 +08:00
500 人随便啥都行,webSocket 最简单。
上面还有 RabbitMQ 都来了,面试八股文看多了把。 如果是需要 MQ 的量级,还用这些? 哪个巨型 IM 不是 tcp/udp 上实现的私有协议啊 |
26
xcstream 2021-01-08 02:26:34 +08:00
mqtt broker 可以单独启动
java 可以做业务端连接 mqtt 提供服务 |