WebSocket实现实时聊天系统
WebSocket实现实时聊天系统
等闲变却故人心,却道故人心易变。
简介:前几天看了WebSocket,今天体验下它的实时聊天。
一、项目介绍
WebSocket 实时聊天系统自己一个一码的搞出来还是要花费好多时间的,我就找了两个项目来玩玩。但众所周知,项目来了还是要稍加修改才可正常使用,下面推荐两个很好改的典型项目。
尊重-尊重-尊重原创,这两个项目我是几天前在Github 上找到的并非原创,但浏览网页关掉了,Github 原文链接找不到了贴不出来,下面提供百度网盘下载链接,压缩包很小下载方便。
下载链接1: https://pan.baidu.com/s/1c1_ePy_B3zlsqbIhQCPsZA 密码: eont
下载链接2:https://pan.baidu.com/s/1dDN2fc4Jsom69BwtblJ8Zg 密码: fsmw

二、项目1-ChatOnLine
该项目使用WebSocket 及Java 搭建在线聊天系统,包含服务端和客户端。
我个人感觉这个项目的技术算是比较老的,现在很多项目至少都是SpringBoot、前后端分离等。而这个项目不仅是要发布到tomcat 中运行,而且前后端不分离、后端代码混插这JSP页面等,代码读起来比较费劲,但写出来的都是高手,点赞。
1、导入工程
下载好zip 包解压,导入IDEA 中,IDEA 配置好maven 后都会顺利下载Jar 包依赖。
可能会报错的地方,不错最好;Project Structure 下的Modules 多出了其他没必要的Modules,只需保留chat-online-maven 一个Modules。

还有一个要修改的地方,这个地方启动并不会报错,但是到查询数据库的时候就会报错,因为工程中使用的连接Mysql 数据库工具的版本太低了,调高版本即可。
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
2、运行工程
导入工程都没有任何报错之后,就可以着手运行工程了。但这个项目有涉及到数据库操作,所以先把数据库准备好以及代码中连接数据库的用户名称、密码、数据库名称。
1、修改工程中DBInfo
修改DBInfo 类中的url、username和password,改为能连上自己Mysql 数据库的url、username、password,其中url 包括IP 和数据库名称。

2、建立本地数据库&表
可以在数据库界面手动创建,也可以通过Sql 语句执行。
create database dbchatroom;/*创建数据库*/ --创建用户表
create table ChatUser(username CHAR(20) PRIMARY KEY, password CHAR(64) NOT NULL, nickname VARCHAR(20), sex CHAR(2)); create view ViewUserToChat as select username, password, nickname, sex from ChatUser;

3、发布工程到Tomcat 容器
还是SpringBoot 项目方便快捷,内置tomcat 容器,不需要把工程打包到tomcat 中。配置tomcat 容器就不多说了,改下Server 和Deployment 选中要发布的工程即可。

发布成功:

4、登录聊天系统
先点击注册,再使用注册的账号登录聊天室。

聊天界面:

这个项目到这里我还是不太满意,用户限制方面可以借鉴,但聊天界面和方式不太乐观。还是要结合项目二,但是项目二有部分数据是写死的比如用户,没有项目一灵活。
三、项目二-ChatRoom
该项目使用Spring + Netty + WebSocket 实现了实时聊天系统,这个项目最令我满意的一点就是导入即可运行,无需任何一丝一毫的改动。
1、发布运行
项目二也不是SpringBoot 项目,运行方式和项目一一样,需要发布到tomcat 容器。

2、登录界面
该用户数据写死,没用到数据库,上图UserInfoDaoImpl 中记录着登录信息。

3、聊天界面
聊天界面做的也很好,再加上一些功能进一步完善就可以商用了。

五、我的聊天系统
我的聊天系统也是基于WebSocket 实现的,未上线~
等闲变却故人心
却道故人心易变
WebSocket实现实时聊天系统的更多相关文章
- [转]使用 HTML5 WebSocket 构建实时 Web 应用
HTML5 WebSocket 简介和实战演练 本文主要介绍了 HTML5 WebSocket 的原理以及它给实时 Web 开发带来的革命性的创新,并通过一个 WebSocket 服务器和客户端的案例 ...
- 使用 HTML5 WebSocket 构建实时 Web 应用
原文地址:http://www.ibm.com/developerworks/cn/web/1112_huangxa_websocket/ HTML5 WebSocket 简介和实战演练 本文主要介绍 ...
- (转)使用 HTML5 WebSocket 构建实时 Web 应用
HTML5 WebSocket 简介和实战演练 本文主要介绍了 HTML5 WebSocket 的原理以及它给实时 Web 开发带来的革命性的创新,并通过一个 WebSocket 服务器和客户端的案例 ...
- Asp.net+WebSocket+Emgucv实时人脸识别
上个月在网上看到一个用web实现简单AR效果的文章,然后自己一路折腾,最后折腾出来一个 Asp.net+WebSocket+Emgucv实时人脸识别的东西,网上也有不少相关资料,有用winform的也 ...
- springboot搭建一个简单的websocket的实时推送应用
说一下实用springboot搭建一个简单的websocket 的实时推送应用 websocket是什么 WebSocket是一种在单个TCP连接上进行全双工通信的协议 我们以前用的http协议只能单 ...
- nodejs+websocket实时聊天系统
介绍下websocket: webSocket协议本质上是一个基于tcp的协议; 建立一个websocket连接,大体的过程: 1.客户端浏览器首先向服务器发起一个http请求,这个请求和平常的请求有 ...
- 使用WebSocket构建实时WEB
为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/SJQ. http://www.cnblogs.com/shijiaqi1066/p/3795075.html ...
- Practical Node.js (2018版) 第9章: 使用WebSocket建立实时程序,原生的WebSocket使用介绍,Socket.IO的基本使用介绍。
Real-Time Apps with WebSocket, Socket.IO, and DerbyJS 实时程序的使用变得越来越广泛,如传统的交易,游戏,社交,开发工具DevOps tools, ...
- Django实现websocket完成实时通讯,聊天室,在线客服等
一 什么是Websocket WebSocket是一种在单个TCP连接上进行全双工通信的协议 WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据.在WebS ...
随机推荐
- C语言中位运算异或“∧”的作用
1.概念异或运算符"∧"也称XOR运算符.它的规则是若参加运算的两个二进位同号,则结果为0(假):异号则为1(真).即 0∧0=0,0∧1=1, 1^0=1,1∧1=0.运算 ...
- Azure Synapse Link for Dataverse
MyBuild - Scale, analyze and serve Microsoft Dynamics 365 application data with Azure 本周的微软Bulid大会上发 ...
- archlinux Timeshift系统备份与还原
安装 timeshif yay -s timeshif 备份设置 选择快照类型 此处选择[RSYNC] 选择储存位置 每台设备安装分区不一样,大家安装实际情况选择,一般选择比较大的空间存储,并且最好是 ...
- Apple iWork(Pages、Numbers、Keynote)11.0 发布
苹果今天将其专为 iOS 和 macOS 设备设计的 iWork 应用套件更新为版本 11,引入了许多新功能和改进功能. Pages 文稿. 文档高手,精美不言而喻. 进一步了解 Pages 文稿 & ...
- GO学习-(17) Go语言基础之反射
Go语言基础之反射 本文介绍了Go语言反射的意义和基本使用. 变量的内在机制 Go语言中的变量是分为两部分的: 类型信息:预先定义好的元信息. 值信息:程序运行过程中可动态变化的. 反射介绍 反射是指 ...
- JVM学习心得—JVM内存模型(个人整理,请勿转载)
一.运行时数据区域 线程私有的:程序计数器+虚拟机栈+本地方法栈 线程共享的:堆+方法区(运行时常量池)+直接内存(非运行时数据区的一部分) *JDK1.8后将方法区废除,新增元空间. 1.1 程序计 ...
- YOLO、SSD、FPN、Mask-RCNN检测模型对比
YOLO.SSD.FPN.Mask-RCNN检测模型对比 一.YOLO(you only look once) YOLO 属于回归系列的目标检测方法,与滑窗和后续区域划分的检测方法不同,他把检测任务当 ...
- 开放神经网络交换(ONNX)工具
开放神经网络交换(ONNX)工具 开放神经网络交换(ONNX)是一个开放的生态系统,它使人工智能开发人员能够在项目发展过程中选择正确的工具.ONNX为人工智能模型提供了一种开源格式,包括深度学习和传统 ...
- Flink实时计算pv、uv的几种方法
本文首发于:Java大数据与数据仓库,Flink实时计算pv.uv的几种方法 实时统计pv.uv是再常见不过的大数据统计需求了,前面出过一篇SparkStreaming实时统计pv,uv的案例,这里用 ...
- teprunner重磅更新Git打通PyCharm与测试平台
经过Python测试交流群的小伙伴群策群力,teprunner添加了一个重要功能,把PyCharm中的代码,通过Git同步到测试平台中,生成测试用例.这样,teprunner就成了一个名副其实的pyt ...