如题。
我这个系统是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 ![]() 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 GBdG6clg2Jy17ua5 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 提供服务 |