上节课讲了群聊,这次来说说单聊,单聊要比群聊复杂点,但是代码也不是很多,主要是前端显示比较麻烦点。
效果:
图片描述
登陆
首先一个新的用户,需要先登陆,输入自己的昵称,然后点击登陆。后端服务会把你的用户名和当前的线程进行邦定,这样就可以通过你的用户名找到你的线程。登陆成功,后端返回定义好的消息 ,前端判断记录,这样给别人发消息时就可以携带自己的信息。
图片描述
查找用户
在输入框输入用户名,就可以返回对应的用户的线程,这样你就可以把消息发送给你要聊天的对象。如果不存在,后端回返回消息给前端,该用户不存在。如果存在,就记录此用户名到中,这样你发送消息的时候就可以发送给对应用户了。
图片描述
开始聊天
发送聊天信息时,这样后端就知道是谁要发给谁,根据用户名去找到具体的线程去单独推送消息,实现单聊。
前端待完善
左侧聊天列表没有实现,每搜索一个在线用户,应该动态显示在左侧,点击该用户,动态显示右侧聊天窗口进行消息发送。现在是你和所有人的单聊消息都会显示在右侧,没有完成拆分,因为这是一个页面,处理起来比较麻烦,我一个后端就不花时间搞了,感兴趣的可以自己去实现。
前端代码
因为注视比较详细,就直接复制整个代码到这里,大家自己看。
后端改造
加入一个,邦定user和Channel
改造
注释很详细,自己看
总结
消息模型应该定义一个单独的类来管理,我目前是用的字符串来判断,提前规定了一些模型,通过判断来响应前端的请求,比较简单。还有就是没有使用数据库,前端不能显示聊天记录,不能实现消息的已读未读。实际场景中应该对消息进行加密存储,且不能窥探用户隐私。
前端可以使用来存储聊天记录,自己可以扩展。
前端的显示可能有点问题,自己可以调。其实主要是学习netty后端的搭建
别忘了关注我
mike啥都想搞
求关注啊。
领取专属 10元无门槛券
私享最新 技术干货