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实现实时聊天系统的更多相关文章

  1. [转]使用 HTML5 WebSocket 构建实时 Web 应用

    HTML5 WebSocket 简介和实战演练 本文主要介绍了 HTML5 WebSocket 的原理以及它给实时 Web 开发带来的革命性的创新,并通过一个 WebSocket 服务器和客户端的案例 ...

  2. 使用 HTML5 WebSocket 构建实时 Web 应用

    原文地址:http://www.ibm.com/developerworks/cn/web/1112_huangxa_websocket/ HTML5 WebSocket 简介和实战演练 本文主要介绍 ...

  3. (转)使用 HTML5 WebSocket 构建实时 Web 应用

    HTML5 WebSocket 简介和实战演练 本文主要介绍了 HTML5 WebSocket 的原理以及它给实时 Web 开发带来的革命性的创新,并通过一个 WebSocket 服务器和客户端的案例 ...

  4. Asp.net+WebSocket+Emgucv实时人脸识别

    上个月在网上看到一个用web实现简单AR效果的文章,然后自己一路折腾,最后折腾出来一个 Asp.net+WebSocket+Emgucv实时人脸识别的东西,网上也有不少相关资料,有用winform的也 ...

  5. springboot搭建一个简单的websocket的实时推送应用

    说一下实用springboot搭建一个简单的websocket 的实时推送应用 websocket是什么 WebSocket是一种在单个TCP连接上进行全双工通信的协议 我们以前用的http协议只能单 ...

  6. nodejs+websocket实时聊天系统

    介绍下websocket: webSocket协议本质上是一个基于tcp的协议; 建立一个websocket连接,大体的过程: 1.客户端浏览器首先向服务器发起一个http请求,这个请求和平常的请求有 ...

  7. 使用WebSocket构建实时WEB

    为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/SJQ. http://www.cnblogs.com/shijiaqi1066/p/3795075.html ...

  8. Practical Node.js (2018版) 第9章: 使用WebSocket建立实时程序,原生的WebSocket使用介绍,Socket.IO的基本使用介绍。

    Real-Time Apps with WebSocket, Socket.IO, and DerbyJS 实时程序的使用变得越来越广泛,如传统的交易,游戏,社交,开发工具DevOps tools, ...

  9. Django实现websocket完成实时通讯,聊天室,在线客服等

    一 什么是Websocket WebSocket是一种在单个TCP连接上进行全双工通信的协议 WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据.在WebS ...

随机推荐

  1. windows 批量删除用户

    @echo off for %%I in (longxj,liujr,laijx,yuanyq,yanghui,xiejz,zhanlei,zifz,yuansy,denglf,lilan,chenz ...

  2. shell基础之变量及表达式

    本节内容 1. shell变量简介 2. 定义变量 3. 使用变量 4. 修改变量的值 5. 单引号和双引号的区别 6. 将命令的结果赋值给变量 7. 删除变量 8. 变量类型 9. 特殊变量列表 1 ...

  3. Java 中布尔(boolean)类型占用多少个字节

    为什么要问这个问题,首先在Java中定义的八种基本数据类型中,除了其它七种类型都有明确的内存占用字节数外,就 boolean 类型没有给出具体的占用字节数,因为对虚拟机来说根本就不存在 boolean ...

  4. 有关fgets和fcntl的讨论-待整理更新

    问题引出 一个client程序:select 超时监听 sockfd套接字 和 STDIN_FILENO标准输入:若sockfd可读则接收server报文:若标准输入可读(按下回车),则开始用fget ...

  5. Centos7.4 file '/grub/i386-pc/normal.mod' not found,实际为/boot下所有文件丢失

    注:如果服务器特别重要,此方案慎用.如果没有其他方案解决,可以使用该方案 事件:搭建在云计算管理平台CAS上的 Centos7.4 虚拟机在一次断电后,启动虚拟机出现file '/grub/i386- ...

  6. 【Web前端HTML5&CSS3】11-定位

    笔记来源:尚硅谷Web前端HTML5&CSS3初学者零基础入门全套完整版 目录 定位的简介 1. 相对定位 偏移量(offset) 相对定位的特点 2. 绝对定位 绝对定位的特点 包含块(co ...

  7. nlp任务中的传统分词器和Bert系列伴生的新分词器tokenizers介绍

    layout: blog title: Bert系列伴生的新分词器 date: 2020-04-29 09:31:52 tags: 5 categories: nlp mathjax: true ty ...

  8. Tomcat 中文乱码

    问题描述 tomcat9启动后会有中文乱码,比如控制台乱码: startup.bat启动时乱码: 解决方法 打开"/apache-tomcat-9.0.20/conf/logging.pro ...

  9. Proteus中包含的主流单片机列举

    经常使用Proteus的朋友面临的一个问题就是,这个设计用Proteus能仿真吗?在初级阶段,我们仅仅会参考Proteus是否有对应的器件以及器件是否有仿真模型来决断这个问题.有就能仿真,没有就不能仿 ...

  10. MindSpore技术理解(下)

    MindSpore技术理解(下) 4 GraphEngine 由于深度学习算法需要进行大量的计算,很多公司都设计了自己的深度学习专用处理器(如谷歌的张量处理器.阿里巴巴的含光等),华为也发布了自主设计 ...