关于android:android-springboot实现点对点实时聊天

5次阅读

共计 1245 个字符,预计需要花费 4 分钟才能阅读完成。

前言

这周一就须要交 android 大试验作业,android 大试验做了一个二手商城,然而性能太少了,android 老师要求大试验要有一些特色。就想着实现一下实时聊天。而后就利用周日工夫试了一下。

socket

实时聊天须要 socket 连贯。一般的后盾申请是 http 或者 https 申请,这代表着前台发出请求,后盾响应申请,就完结了。而 socket 协定是一种长连贯,一旦前台或者后盾建设连贯后,须要一方收回敞开连贯才会断开。在连贯中客户端和服务端能够随便的相互发送信息。这十分实用于实时聊天情景。如果实时聊天应用罕用的 http 协定,岂但会每收回一条音讯就收回一个申请,这会占用大量服务器资源,并且服务端无奈被动向接管客户端发送音讯。

界面实现

聊天界面本质上也是一种列表,只有应用 android 罕用的列表布局就能够,只须要判断一下一条音讯是否是自己收回,如果是自己收回,须要在左边显示信息
具体实现能够从网上找一篇博客来实现。值得注意的是,每个聊天气泡还是很有意思的,咱们看到的聊天气泡也是背景图片,然而是一种非凡格局的背景图片,他会随着内容的变动而拉伸,这一切都是 android 本人变动的,官网叫这种图片为点九图。咱们先看一下应用点九图与不应用点九图的差异



点九图也是能够本人制作的,这里咱们了解一下他的大抵原理

上边黑线代表程度拉伸时拉伸的区域,
右边黑线代表竖直拉伸的区域,
底部黑线和左边黑线代表内容的显示区域,
显示成果如图。
点九图须要被设置为背景图片并且已.9 名字结尾。如 background.9.png。
可能因为应用的场景不多,网上找不到现成的资源,我去 github 一个成品我的项目里找到了一个拿来间接应用。
给大家个本我的项目连贯,不必再去找了 https://github.com/zhaokaiqia…

实现

实现交互通信参考了另一篇博客。https://xlui.me/t/spring-boot…
大略原理就是两个客户端别离与服务端建设 socket 通信,同时订阅一个地址的音讯。当然这个地址带有本用户 id。发送音讯的时候,须要发送给另一个地址,并且带有接管方的 id, 服务器负责接管发送数据并且通过接管方 id 发送给接管方所接管的数据。


具体实现形式能够参考下面的博客,博客里实现了播送,动静群组,点对点音讯。也能够看本我的项目
https://github.com/zhaokaiqia… 只用到了点对点音讯。

麻烦的中央

有一个问题,在设计数据库的时候 chat 与 user 为多对多关系,然而 chat 里其实只有两个 user,别离对应聊天的两个人 A 与 B。对于 A 来说,B 是他的聊天对象,对于 B 来说,A 是他的聊天对象。这就须要对 chat.users.get(0)与以后登录用户 id 判断是否相等,来显示对方与本人的用户名和头像。
临时没有想到好的解决办法。

总结

在实现的过程中因为工夫紧迫也做了很多斗争。然而写大试验,只有实现就行,老师基本不关怀会不会有 bug, 你用了什么实现。感激黄庭祥学长在我实现的时候给予的帮忙

正文完
 0