摘要:随着互联网的快速发展,网络聊天工具已经作为一种重要的信息交流工具,受到越来越多的网民的青睐。目前,出现了很多非常不错的聊天工具,其中应用比较广泛的有 Netmeeting 、腾讯 QQ、MSN-Messager等等。该系统开发主要包括一个网络聊天服务器程序和一个网络聊天客户程序两个方面。前者通过 Socket 套接字建立服务器,服务器能读取、转发客户端发来信息,并能刷新用户列表。后者通过与服务器建立连接,来进行客户端与客户端的信息交流。其中用到了局域网通信机制的原理,通过直接继承 Thread 类来建立多线程。开发中利用了计算机网络编程的基本理论知识 , 如 TCP/IP 协议、客户端 / 服务器端模式( Client/Server 模式)、网络编程的设计方法等。在网络编程中对信息的读取、发送,是利用流来实现信息的交换,其中介绍了对实现一个系统的信息流的分析,包含了一些基本的软件工程的方法。经过分析这些情况, 该局域网聊天工具采用 Eclipse 为基本开发环境和 java语言进行编写,首先可在短时间内建立系统应用原型,然后,对初始原型系统进行不断修正和改进,直到形成可行系统
关键词: 聊天; springboot;websocket;mysql

Abstract: with the rapid development of the Internet, online chat tool has been an important information exchange tool, favored by more and more Internet users. At present, there are many very good chat tools, among which NetMeeting, Tencent QQ, MSN Messenger and so on are widely used. The development of the system mainly includes a network chat server program and a network chat client program. The former establishes the server through socket socket, the server can read and forward the information from the client, and refresh the user list. The latter establishes a connection with the server to exchange information between clients. The principle of local area network communication mechanism is used, and multithreading is established by directly inheriting thread class. The basic theoretical knowledge of computer network programming is used in the development, such as TCP / IP protocol, client / server mode, design method of network programming, etc. In network programming, the reading and sending of information is to realize the exchange of information by using flow. This paper introduces the analysis of the information flow of a system, including some basic software engineering methods. After analyzing these situations, the LAN chat tool is written with eclipse as the basic development environment and Java language. Firstly, the system application prototype can be established in a short time, and then the initial prototype system is continuously modified and improved until a feasible system is formed

Key words: chat; springboot; websocket; mysql

目录
1 绪论 3
1.1 项目开发背景 3
1.2 项目开发意义 3
1.3 项目主要的内容 4
2 相关技术介绍及系统环境开发条件 4
2.1相关技术介绍 4
2.2系统环境开发条件 5
3 系统的需求分析与设计 6
3.1可行性分析 6
3.2需求分析 7
3.2.1系统总体概述 7
3.2.2功能性需求 7
3.2.3非功能性需求 8
3.3概要设计 8
服务端结构 8
客户端结构 9
3.2.5系统ER图设计 10
3.3 数据库设计 11
3.3.1数据库设计的原则 11
3.3.2数据库ER图设计 11
3.3.3数据库表的设计 11
4系统功能模块实现 12
4.1 登陆功能模块实现 12
4.2 聊天页面功能实现 14
4.2日志功能模块 17
5 系统测试 17
5.1系统调试的目的和意义 17
5.2功能测试用例 18
6总结 19
参考文献: 19
致 谢 20

 private static ChatMsgService chatMsgService;// 注入的时候,给类的 service 注入@Autowiredpublic void setChatService(ChatMsgService chatService) {ChatWebSocket.chatMsgService = chatService;}//静态变量,用来记录当前在线连接数。应该把它设计成线程安全的。private static int onlineCount = 0;//concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。若要实现服务端与单一客户端通信的话,可以使用Map来存放,其中Key可以为用户标识private static ConcurrentHashMap<String, ChatWebSocket> webSocketSet = new ConcurrentHashMap<String, ChatWebSocket>();//与某个客户端的连接会话,需要通过它来给客户端发送数据private Session WebSocketsession;//当前发消息的人员编号private String userno = "";/*** 连接关闭调用的方法*/@OnClosepublic void onClose() {if (!userno.equals("")) {webSocketSet.remove(userno); //从set中删除subOnlineCount();     //在线数减1//System.out.println("有一连接关闭!当前在线人数为" + getOnlineCount());}}/*** 收到客户端消息后调用的方法** @param chatmsg 客户端发送过来的消息* @param session 可选的参数*/@SuppressWarnings("unused")@OnMessagepublic void onMessage(String chatmsg, Session session) {JSONObject jsonObject = JSONObject.parseObject(chatmsg);//给指定的人发消息sendToUser(jsonObject.toJavaObject(ChatMsg.class));//sendAll(message);}/*** 给指定的人发送消息** @param chatMsg 消息对象*/public void sendToUser(ChatMsg chatMsg) {String reviceUserid = chatMsg.getReciveuserid();String sendMessage = chatMsg.getSendtext();sendMessage= EmojiFilter.filterEmoji(sendMessage);//过滤输入法输入的表情chatMsgService.InsertChatMsg(new ChatMsg().setMsgtype(chatMsg.getMsgtype()).setReciveuserid(reviceUserid).setSenduserid(userno).setSendtext(sendMessage));try {if (webSocketSet.get(reviceUserid) != null) {webSocketSet.get(reviceUserid).sendMessage(userno+"|"+sendMessage);}else{webSocketSet.get(userno).sendMessage("0"+"|"+"当前用户不在线");}} catch (IOException e) {e.printStackTrace();}}

基于Springboot+websocket的web聊天项目(论文+程序设计源码+数据库文件):点击下载

基于Springboot+websocket的web聊天项目(论文+程序设计源码+数据库文件)相关推荐

  1. 基于java项目ssm二手书交易平台设计与实现(论文+程序设计源码+数据库文件)

    1 绪论 4 1.1 项目开发背景 4 1.2 项目开发意义 5 1.3 项目主要的内容 5 2 相关技术介绍及系统环境开发条件 6 2.1相关技术介绍 6 2.2系统环境开发条件 7 3 系统的需求 ...

  2. 基于javaweb项目ssm食品管理系统设计与实现(论文+程序设计源码+数据库文件)

    摘要:随着食品产业的发展.食品销量的增加.新食品种类的快速增加.新的食品技术的发展,已经得到各个国家的关注,因为食品安全状况是和广大人民群众的身体健康息息相关的.本系统主要采用springboot开发 ...

  3. 基于java的千千影评网站的设计与实现(论文+程序设计源码+数据库文件)

    摘要:信息技术高度发达的今天,新闻业已经在互联网行业中占越发主导地位.而我们的生活也跟新闻息息相关,尤其是在高度发达的精神文化社会,人们对于电影的喜爱也越来越热衷,但想挑到自己喜爱的片子,就需要影评网 ...

  4. 基于线上的茶叶购买小程序(论文+程序设计源码+数据库文件)

    微信小程序在日常生活中应用越来越广,网上消费.游戏娱乐等成为了一种常见应用方式.为进一步了解和探索微信小程序在点餐系统中的潜在价值和意义,本文通过使用 Javascript 技术.Spring boo ...

  5. 基于北斗导航定位系统的设计与实现(论文+程序设计源码+数据库文件)

    摘 要 改革开放新时代的到来,人们的生活发生了翻天覆地的变化,人们的娱乐方式变得更加丰富多彩,人们的活动圈子在不断的扩大,不仅仅局限于眼前的苟且,更向往着诗与远方,人们的活动圈子的扩大就意味着在特殊时 ...

  6. 基于Android公交查询系统的设计与实现(论文+程序设计源码+数据库文件)

    [摘 要]随着互联网的技术的不断更新发展,人们生活节奏也在不断的加快,对于网络的依赖也越来越紧密,尤其是在等公交,经常会错过班次,但又不知道,下次班次几点发车,这样会导致乘客花掉大把时间在等待,如果可 ...

  7. 基于javaweb固定资产管理系统的设计与实现(论文+程序设计源码+数据库文件)

    目录 摘要: 2 1 绪论 4 1.1 项目开发背景 4 1.2 项目开发意义 4 1.3 项目主要的内容 4 2 相关技术介绍及系统环境开发条件 4 2.1相关技术介绍 5 2.2系统环境开发条件 ...

  8. 基于微信小程序的再生资源回收平台设计与开发(论文+程序设计源码+数据库文件)

    1 绪论 2 1.1 项目开发背景 2 1.2 项目开发意义 2 1.3 项目主要的内容 2 2 相关技术介绍及系统环境开发条件 3 2.1相关技术介绍 3 2.2系统环境开发条件 4 3 系统的需求 ...

  9. 基于微信小程序停车场自助停取车设计与实现(论文+程序设计源码+数据库文件)

    随着经济的快速发展,科技水平的日益提升,人们的生活节奏也愈来愈快,即用即走的微信小程序,他的发展和使用也越来越频繁,许多商家.企业都建立了自己的微信小程序.然而在生活中,随着越来越多私家车的出现,交通 ...

  10. [javaweb企业人力资源管理系统设计与实现(论文+程序设计源码+数据库文件)

    目录 1 绪论 4 1.1 项目开发背景 4 1.2 项目开发意义 4 1.3 项目主要的内容 4 2 相关技术介绍及系统环境开发条件 5 2.1相关技术介绍 5 (1)MVC设计模式 5 (2)Sp ...

最新文章

  1. linux 系统打造man中文帮助手册图解
  2. TCP服务器/客户端实例(C/C )
  3. c/c++面试试题(二)
  4. JavaScript DOM 4 - 属性 attribute vs property
  5. Android Gradle插件(plugin)版本(version)与Gradle、SDK Build Tools版本关系
  6. 找回密码forget_password
  7. 完整简单的红黑树算法
  8. 计算机组成原理考试试题答案,计算机组成原理期末考试试题及答案 (精选可编辑)...
  9. viewUrl 终结者
  10. 淘宝网视频下载的方法
  11. python熊猫弹幕_python奇闻杂技05 爬虫初步学习+jieba分词+词云库+哔哩哔哩弹幕爬取示例(数据分析pandas)...
  12. PLA-PEG2000-Maleimide,聚乳酸和马来西安亚楠修饰的PEG,MAL-PEG2000-PLA
  13. oracle ora00957,常见oracle错误代码ORA-xxxxx及其解决方法(持续更行中)
  14. 高数篇:01函数的中值定理
  15. Bootstrap.yml 和 application.yml
  16. unity虚拟仿真PC端需要掌握的技术
  17. selenium打不开Ie浏览器的解决办法
  18. python公历转农历_python有没有能实现公历转换农历的库
  19. Android 音频技术开发总结
  20. STM32f1之简单控制继电器模块(附源码)

热门文章

  1. UmiJs(v3.x版本)
  2. VOC2007/2012数据集解析
  3. SKU与SPU的区别与联系
  4. VMware与xshell安装教程
  5. 通过DSP采集AD7606的转换结果
  6. Excel直接跳过隐藏行,粘贴数据到可见单元格
  7. mosek安装及出现的问题解决方法
  8. 最小二乘法求线性回归方程
  9. 【必修】人工智能原理 学习笔记(二)chapter 2 产生式系统
  10. 人工智能之-产生式系统