前言

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

socket

实时聊天须要socket链接。普通的后台请求是http或者https请求,这表明着前台发出请求,后台响应请求,就结束了。而socket协议是一种长链接,一旦前台或者后台创建链接后,须要一方发出关闭链接才会断开。在链接中客户端和服务端能够随意的互相发送信息。这很是适用于实时聊天情景。若是实时聊天使用经常使用的http协议,不但会每发出一条消息就发出一个请求,这会占用大量服务器资源,而且服务端没法主动向接收客户端发送消息。git

界面实现

聊天界面实质上也是一种列表,只要使用android经常使用的列表布局就能够,只须要判断一下一条消息是不是本人发出,若是是本人发出,须要在右边显示信息

具体实现能够从网上找一篇博客来实现。值得注意的是,每一个聊天气泡仍是颇有意思的,咱们看到的聊天气泡也是背景图片,可是是一种特殊格式的背景图片,他会随着内容的变化而拉伸,这一切都是android本身变化的,官方叫这种图片为点九图。咱们先看一下使用点九图与不使用点九图的差异github

点九图也是能够本身制做的,这里咱们理解一下他的大体原理

上边黑线表明水平拉伸时拉伸的区域,

左边黑线表明竖直拉伸的区域,

底部黑线和右边黑线表明内容的显示区域,

显示效果如图。

点九图须要被设置为背景图片而且已.9名字结尾。如background.9.png。

可能因为使用的场景很少,网上找不到现成的资源,我去github一个成品项目里找到了一个拿来直接使用。

给你们个本项目链接,不用再去找了https://github.com/zhaokaiqia...web

实现

实现交互通讯参考了另外一篇博客。https://xlui.me/t/spring-boot...

大概原理就是两个客户端分别与服务端创建socket通讯,同时订阅一个地址的消息。固然这个地址带有本用户id。发送消息的时候,须要发送给另外一个地址,而且带有接收方的id,服务器负责接收发送数据而且经过接收方id发送给接收方所接收的数据。spring

具体实现方式能够参考上面的博客,博客里实现了广播,动态群组,点对点消息。也能够看本项目

https://github.com/zhaokaiqia... 只用到了点对点消息。

数据库

麻烦的地方

有一个问题,在设计数据库的时候chat与user为多对多关系,可是chat里其实只有两个user,分别对应聊天的两我的A与B。对于A来讲,B是他的聊天对象,对于B来讲,A是他的聊天对象。这就须要对chat.users.get(0)与当前登陆用户id判断是否相等,来显示对方与本身的用户名和头像。

暂时没有想到好的解决办法。服务器

总结

在实现的过程当中因为时间紧迫也作了不少妥协。可是写大实验,只要实现就行,老师根本不关心会不会有bug,你用了什么实现。感谢黄庭祥学长在我实现的时候给予的帮助websocket

android点对点聊天软件,android + springboot实现点对点实时聊天相关推荐

  1. 基于android的个人理财软件 android stu_Android聊天软件开发(基于网易云IM即时通讯)——注册账号(二)...

    OKhttp封装 IRequest package heath.com.chat.OKhttp;import java.util.Map;public interface IRequest {publ ...

  2. android 系统清理软件,Android软件大比拼:系统清理选择谁?

    [IT168厂商动态]近日,IDC在报告中指出,谷歌Android系统市场份额已接近80%.特别是在中国市场,大量千元以内Android手机的推出,加速了智能手机的快速普及.Android手机也成为用 ...

  3. android 第三方加密软件,Android实用图文教程之代码混淆、第三方平台加固加密、渠道分发...

    第一步:代码混淆(注意引入的第三方jar) 在新版本的ADT创建项目时,混码的文件不再是proguard.cfg,而是project.properties和proguard-project.txt. ...

  4. python聊天软件实现_python实现点对点聊天程序

    用Python实现点对点的聊天,2个程序,一个是client.py,一个是server.py,通过本机地址127.0.0.1连接进行通信,利用多线程把发送消息和接收消息分开独立进行. client代码 ...

  5. 基于Android的聊天软件的设计与实现-一个聊天软件开发起来没那么难不是?

    您好,我是码农飞哥(wei158556),感谢您阅读本文,欢迎一键三连哦.

  6. android 屏幕管理软件,Android Screencast下载

    Android Screencast旨在将您的Android手机或平板电脑的屏幕活动记录到视频中.创建教程,将你的游戏记录到高清视频中,准备在网络上共享.屏幕录像机使用方便,输出设置为比特率,视频大小 ...

  7. android通知栏自定义软件,android实现通知栏下载更新app示例

    1.设计思路,使用VersionCode定义为版本升级参数. android为我们定义版本提供了2个属性: android:versionCode="1" android:vers ...

  8. android ppt 注释软件,Android版WPS Office 5.5.2 发布 PPT悬浮备注框全面增强

    5月15日,金山宣布Android 版WPS Office 5.5.2 发布.本次更新对演示文档备注显示.PDF文档快速阅读及文档管理进行了优化.新版本Android 版WPS Office 将与安卓 ...

  9. android电池管理软件,Android实现电池管理系统

    一.Android 电池服务 Android电池服务,用来监听内核上报的电池事件,并将最新的电池数据上报给系统,系统收到新数据后会去更新电池显示状态.剩余电量等信息.如果收到过温报警和低电报警,系统会 ...

最新文章

  1. 《Linux实践及应用》
  2. 学猫叫用计算机歌词,我们一起学猫叫什么歌歌词是什么意思
  3. Linux的shell脚本函数教程
  4. Maven-Could not resolve artifact org.apache.maven.archetypes:maven-archetype-quickstart:jar:1.1
  5. 华为平板matepad支持鸿蒙2.0,首款鸿蒙OS 2.0平板,华为正式公布Matepad Pro2,搭载麒麟9000...
  6. 只会用单片机点灯,很丢人吗?
  7. java文件操作和_JAVA文件操作类和文件夹的操作
  8. Php 比较字符串相似度
  9. 基于CNN+MFCC的语音情感识别
  10. 关于海量分页的补充说明(转)
  11. 关于对象和类的那些小事
  12. zabbix监控硬盘
  13. windows环境下Eclipse开发MapReduce程序遇到的四个问题及解决办法
  14. [渝粤教育] 广东-国家-开放大学 21秋期末考试互联网营销概论10092k2
  15. cookie里面用到的关键字_Java的理解角度-关键字篇
  16. VB.NET连接远程Oracle
  17. Flutter入门系列-VideoPlayer在列表使用
  18. c# mysql varbinary_c# – 从数据库读取SQL Varbinary Blob
  19. 基础破解XP/Win 7开机密码方法(粘滞键漏洞)
  20. 什么是虚拟主机?虚拟主机的作用有哪些?

热门文章

  1. 【自动驾驶模拟器AirSim快速入门 | 04】推理预测及模拟器运行
  2. mysql from 表1,表2 与join的区别,ON后面多条件 与 where 多条件
  3. Ubuntu安装英伟达驱动CUDA,CUDNN,PyTorch保姆级教程
  4. 仿生算法_糖尿病患者:说出仿生胰腺很有趣,但是现实检查怎么样?
  5. 论文阅读笔记《Patch2CAD: Patchwise Embedding Learning for In-the-Wild Shape Retrieval from a Single Image》
  6. 学习WEB全栈,你必须阅读的2本经典书
  7. 部署企业级RAC+DG架构
  8. CSDN浏览器助手测评
  9. 前端面试题总结(PS:尊重劳动成果拿或者要原笔记记得滴滴)
  10. 零下24度的冷库立体库|一天4000托盘吞吐量