- 掌握Http协议和Web工作原理
- 掌握 WebSocket 原理与实践
- 掌握关系型或非关系型数据库的基本操作
- 掌握消息队列的使用场景,使用方式(RabbitMQ、RocketMQ、Kafka等)
众所周知,FanOne是个家喻户晓的Aquaman,她经常在社交软件上找小哥哥们聊天,以至于被多个平台封杀,请你写一个IM即时通信系统,让FanOne能聊天自由吧!
在第四轮的视频网站上添加聊天室功能,和视频审核功能,并优化第四轮的Sql语句
编写一个 IM 即时通信系统 支持单聊,群聊,并且支持查找一定时间内的聊天记录
除了优化重构第四轮的模块,你还需要编写以下模块
websocket模块,联系人模块,会话模块,信息模块
-
重构好友列表逻辑,即为联系人模块
-
对于聊天内容,请使用Redis + Mysql的方式实现
-
对于消息的存储,请使用消息队列异步提交
-
会话列表,支持文字,图片交流,屏蔽功能
-
请使用SpringSecurity的身份功能,完成视频的审核模块
-
除此之外,本轮禁止使用mybatisPlus,请使用mybatis优化你的sql
-
请描述比起http协议,WebSocket协议在聊天模块里都有哪些优势
-
使用消息队列带来的哪些好处,多角度回答
-
由于网络问题、生产者重试机制等原因,可能会导致同一条消息被生产者重复发送。造成聊天室出现重复的信息,该如何解决
-
为了保护用户被骚扰,bilibili和抖音在互相关注,或对方回复之前只允许发送一条信息,我们不需要执行这么复杂的逻辑,但请在一定程度上保护用户的权益
-
比起网络上的在线聊天室,我们更希望你能思考如何处理离线消息的推送
- 请考虑你的聊天系统的性能(例如使用Benchmark测试)
- 使用netty自己实现一个websocket
- 考虑聊天传输的安全性(可以学习一下Telegram是如何保证传输安全性的,但是现阶段是做不到的,可以尝试做一些小的安全性优化)
- 敏感词功能
- ip获取+归属地
- 未读消息数
spring-boot-starter-websocket
- 使用SpringBoot作为基础框架暴露http路由
- WebSocket 的 6 种集成方式
- SpringBoot如何集成RabbitMQ