这里是在简书仿简书的第十二篇,早睡早起身体好
预览地址:https://jian.cemcoe.com
项目前端地址:https://github.com/cemcoe/jianshu_client
私信功能,现在可以说是很基础的功能了,毕竟每个应用都想搞社交,都想搞金融。
那么,今天就搞一个简单的私信功能玩一玩。
有两个主要流程,分别是创建房间和创建消息。
创建房间流程如下:登录用户点击私信按钮,前端监听该点击事件,向后端请求创建二人世界,后端分别从参数和 token 中获取二人的信息,并创建房间,紧接着将房间id给到前端,前端获取两人的房间id,交由前端路由,前端路由根据房间id将登录用户带到房间。并告知另一方,这里的关键点是如何告知另一方。
发送消息流程:奥特曼向小怪兽打招呼,信息发到后端,后端将该信息加载到两人的房间中,此时需要通知房间的小怪兽,奥特曼给它发送了一条消息。问题的核心点就在这里,HTTP在用户请求数据完成后就断开了,此时后端没有能力推到前端,只能由客户端发起请求。
为了消息的及时到达,有很多方案,短轮询,长轮询,sse websocket等,网上很多资料,这里就不多说了,采用 ajax 短轮询。
写一个 setInterval 每隔 6s 向服务器请求该聊天室中的信息,如果有新消息就填上。

而当用户离开该聊天室时则将该定时器清除,而当用户进入该聊天室时创建定时器。
在这里需要注意如果组件 keepalive 了,可以使用 actived 生命周期函数,离开房间使用路由守卫 beforeRouteLeave。
是时候学一波 websocket 了。
网友评论