├── IllustrateImg ├── chartLine.png ├── chartTwo.png ├── chat.png ├── finance.png ├── home.png ├── print.png ├── pull.png └── push.png ├── README.md ├── System.sql ├── System.war ├── _config.yml ├── video ├── base.mp4 └── onlineChat.mp4 ├── websocketBase ├── WebSocket.java └── websocketBase.html └── websocketjar说明 ├── websocket.jar └── 使用说明- jar包.txt /IllustrateImg/chartLine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cjinhuo/javaweb-ajax-websocket-mysql/153936af09423d05ee43550ceba647e06d403e42/IllustrateImg/chartLine.png -------------------------------------------------------------------------------- /IllustrateImg/chartTwo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cjinhuo/javaweb-ajax-websocket-mysql/153936af09423d05ee43550ceba647e06d403e42/IllustrateImg/chartTwo.png -------------------------------------------------------------------------------- /IllustrateImg/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cjinhuo/javaweb-ajax-websocket-mysql/153936af09423d05ee43550ceba647e06d403e42/IllustrateImg/chat.png -------------------------------------------------------------------------------- /IllustrateImg/finance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cjinhuo/javaweb-ajax-websocket-mysql/153936af09423d05ee43550ceba647e06d403e42/IllustrateImg/finance.png -------------------------------------------------------------------------------- /IllustrateImg/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cjinhuo/javaweb-ajax-websocket-mysql/153936af09423d05ee43550ceba647e06d403e42/IllustrateImg/home.png -------------------------------------------------------------------------------- /IllustrateImg/print.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cjinhuo/javaweb-ajax-websocket-mysql/153936af09423d05ee43550ceba647e06d403e42/IllustrateImg/print.png -------------------------------------------------------------------------------- /IllustrateImg/pull.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cjinhuo/javaweb-ajax-websocket-mysql/153936af09423d05ee43550ceba647e06d403e42/IllustrateImg/pull.png -------------------------------------------------------------------------------- /IllustrateImg/push.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cjinhuo/javaweb-ajax-websocket-mysql/153936af09423d05ee43550ceba647e06d403e42/IllustrateImg/push.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Summary 2 | 网上系统主要功能有:为店主统计财务和打印出货单,网站有基本的增删改查功能,财务报表功能,数据可视化图表,多人在线聊天室。 3 | 4 | #### 技术栈 5 | ``` 6 | 前端:html+css+js+ajax+websocket 7 | 后端:Tomcat+JSP+Mysql 8 | ``` 9 | #### 项目运行 10 | ``` 11 | clone git git@github.com:TypeInfos/javaweb-ajax-websocket-mysql.git 12 | 将System.war导入到javaweb开发工具中,如果要放在linux中运行的话下面有个链接教程 13 | sql文件:在MySql终端用:source System.sql 14 | ``` 15 | 在阿里云买了香港的服务器(不用备案),配置linux的Apache+Tomcat环境:[配置环境教程](https://www.cnblogs.com/cyl048/p/6873124.html),再配置https证书:[配置https教程](https://letsencrypt.org/) 16 | 17 | ###### 温馨提示:如果在已经配置完https的服务器上运行websocket要把new WebSocket("ws://localhost:8080...)的ws改成[wss](https://segmentfault.com/q/1010000007391137/a-1020000007391991)因为https是安全协议不允许不安全的wbsocket运行,所以再加个s表示secure,它是WebSocket的加密版本 18 | 19 | 系统管理思想:一个总店能管理各个分店,总店的权限是1,可以查看各个分店的操作记录,分店的权限是0只能查看自己的操作记录。 20 | ### 以下是主要界面 21 | >首页 -> 主要用来显示本地最近的操作记录,可以根据上面的开始日期和结束日期来选择你想查看的某个时间段的操作记录。 22 | >>![home](IllustrateImg/home.png) 23 | 24 | >进货 -> 进你需要的货物到仓库以便出货 25 | >>![home](IllustrateImg/push.png) 26 | 27 | >出货 -> 前提是你的仓库里面的有的 28 | >>![home](IllustrateImg/pull.png) 29 | 30 | >打印订单 -> 可以用打印机打印出来,以便客户需要 31 | >>![home](IllustrateImg/print.png) 32 | 33 | >财务报表 -> 可以根据进货、出货、地区、日期、来筛选记录 34 | >>![home](IllustrateImg/finance.png) 35 | 36 | >图表 -> 以图的形式来看各个地区的销售情况,更直观,当然还可以选择日期,每次选择日期都会异步刷新(基于G2) 37 | >>![home](IllustrateImg/chartLine.png) 38 | >>![home](IllustrateImg/chartTwo.png) 39 | 40 | >多人聊天室 -> 每个管理员都有自己的账号,都有对应的名字,所以可以在聊天室里面说说自己的情况,任何操作都是同时刷新,实时获取(基于websocket) 41 | >>![home](IllustrateImg/chat.png) 42 | 43 | >想看视频操作的话上面有个video文件夹,里面有操作该系统基本功能的视频 44 | 45 | 总结 46 | -------------------- 47 | 界面布局用的时间比较短,所以响应式不是很好,但细节其实挺多的,比如:为了防止短时间多次请求,用函数节流限制。为了让请求后端数据期间让页面看起来跟流畅,用过渡动画来优化用户体验...etc 48 | -------------------------------------------------------------------------------- /System.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE IF NOT EXISTS `resume` /*!40100 DEFAULT CHARACTER SET latin1 */; 2 | USE `resume`; 3 | -- MySQL dump 10.13 Distrib 5.7.17, for macos10.12 (x86_64) 4 | -- 5 | -- Host: localhost Database: resume 6 | -- ------------------------------------------------------ 7 | -- Server version 5.7.20 8 | 9 | /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; 10 | /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; 11 | /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; 12 | /*!40101 SET NAMES utf8 */; 13 | /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; 14 | /*!40103 SET TIME_ZONE='+00:00' */; 15 | /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; 16 | /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; 17 | /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; 18 | /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; 19 | 20 | -- 21 | -- Table structure for table `account` 22 | -- 23 | 24 | DROP TABLE IF EXISTS `account`; 25 | /*!40101 SET @saved_cs_client = @@character_set_client */; 26 | /*!40101 SET character_set_client = utf8 */; 27 | CREATE TABLE `account` ( 28 | `username` varchar(20) NOT NULL, 29 | `password` varchar(20) NOT NULL, 30 | `pName` varchar(20) NOT NULL, 31 | `region` varchar(20) NOT NULL, 32 | `authority` int(11) NOT NULL, 33 | PRIMARY KEY (`username`), 34 | UNIQUE KEY `username_UNIQUE` (`username`) 35 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 36 | /*!40101 SET character_set_client = @saved_cs_client */; 37 | 38 | -- 39 | -- Dumping data for table `account` 40 | -- 41 | 42 | LOCK TABLES `account` WRITE; 43 | /*!40000 ALTER TABLE `account` DISABLE KEYS */; 44 | INSERT INTO `account` VALUES ('ajieshop','ajie20180301','阿杰','仙游',1),('cjhadmin','cjhresume','陈金伙','福州',2),('csb','123','陈思斌','福州',1); 45 | /*!40000 ALTER TABLE `account` ENABLE KEYS */; 46 | UNLOCK TABLES; 47 | 48 | -- 49 | -- Table structure for table `ajieshop` 50 | -- 51 | 52 | DROP TABLE IF EXISTS `ajieshop`; 53 | /*!40101 SET @saved_cs_client = @@character_set_client */; 54 | /*!40101 SET character_set_client = utf8 */; 55 | CREATE TABLE `ajieshop` ( 56 | `tare` decimal(15,2) NOT NULL, 57 | `suttle` decimal(15,2) NOT NULL, 58 | `price` decimal(15,2) NOT NULL, 59 | `chickType` varchar(20) NOT NULL, 60 | PRIMARY KEY (`chickType`), 61 | UNIQUE KEY `chickType_UNIQUE` (`chickType`) 62 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 63 | /*!40101 SET character_set_client = @saved_cs_client */; 64 | 65 | -- 66 | -- Dumping data for table `ajieshop` 67 | -- 68 | 69 | LOCK TABLES `ajieshop` WRITE; 70 | /*!40000 ALTER TABLE `ajieshop` DISABLE KEYS */; 71 | INSERT INTO `ajieshop` VALUES (9757.00,9657.00,10000.00,'童子鸡'),(9752.00,9556.00,10000.00,'战斗鸡'),(9957.00,9722.00,1000.00,'炸鸡'); 72 | /*!40000 ALTER TABLE `ajieshop` ENABLE KEYS */; 73 | UNLOCK TABLES; 74 | 75 | -- 76 | -- Table structure for table `allChickensType` 77 | -- 78 | 79 | DROP TABLE IF EXISTS `allChickensType`; 80 | /*!40101 SET @saved_cs_client = @@character_set_client */; 81 | /*!40101 SET character_set_client = utf8 */; 82 | CREATE TABLE `allChickensType` ( 83 | `chickensType` varchar(20) NOT NULL, 84 | `username` varchar(20) NOT NULL, 85 | `id` int(11) NOT NULL AUTO_INCREMENT, 86 | PRIMARY KEY (`id`) 87 | ) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8; 88 | /*!40101 SET character_set_client = @saved_cs_client */; 89 | 90 | -- 91 | -- Dumping data for table `allChickensType` 92 | -- 93 | 94 | LOCK TABLES `allChickensType` WRITE; 95 | /*!40000 ALTER TABLE `allChickensType` DISABLE KEYS */; 96 | INSERT INTO `allChickensType` VALUES ('计算鸡','cjhadmin',13),('老母鸡','cjhadmin',14),('火鸡','cjhadmin',15),('吹风鸡','cjhadmin',16),('童子鸡','ajieshop',17),('战斗鸡','ajieshop',18),('炸鸡','ajieshop',19); 97 | /*!40000 ALTER TABLE `allChickensType` ENABLE KEYS */; 98 | UNLOCK TABLES; 99 | 100 | -- 101 | -- Table structure for table `allHandleType` 102 | -- 103 | 104 | DROP TABLE IF EXISTS `allHandleType`; 105 | /*!40101 SET @saved_cs_client = @@character_set_client */; 106 | /*!40101 SET character_set_client = utf8 */; 107 | CREATE TABLE `allHandleType` ( 108 | `id` int(11) NOT NULL AUTO_INCREMENT, 109 | `chickType` varchar(20) NOT NULL, 110 | `date` date NOT NULL, 111 | `tare` decimal(15,2) NOT NULL, 112 | `suttle` decimal(15,2) NOT NULL, 113 | `price` decimal(15,2) NOT NULL, 114 | `handleType` int(11) NOT NULL, 115 | `username` varchar(20) NOT NULL, 116 | `region` varchar(20) NOT NULL, 117 | PRIMARY KEY (`id`) 118 | ) ENGINE=InnoDB AUTO_INCREMENT=291 DEFAULT CHARSET=utf8; 119 | /*!40101 SET character_set_client = @saved_cs_client */; 120 | 121 | -- 122 | -- Dumping data for table `allHandleType` 123 | -- 124 | 125 | LOCK TABLES `allHandleType` WRITE; 126 | /*!40000 ALTER TABLE `allHandleType` DISABLE KEYS */; 127 | INSERT INTO `allHandleType` VALUES (260,'计算鸡','2018-03-25',10000.00,10000.00,20.00,1,'cjhadmin','福州'),(261,'老母鸡','2018-03-25',10000.00,10000.00,10000.00,1,'cjhadmin','福州'),(262,'火鸡','2018-03-25',10000.00,10000.00,100.00,1,'cjhadmin','福州'),(263,'吹风鸡','2018-03-25',20000.00,20000.00,150.00,1,'cjhadmin','福州'),(264,'吹风鸡','2018-03-25',100.00,230.00,23.00,-1,'cjhadmin','福州'),(265,'火鸡','2018-03-24',23.00,23.00,23.00,-1,'cjhadmin','福州'),(266,'老母鸡','2018-03-23',45.00,245.00,45.00,-1,'cjhadmin','福州'),(267,'计算鸡','2018-03-22',232.00,232.00,23.00,-1,'cjhadmin','福州'),(268,'吹风鸡','2018-03-21',100.00,230.00,23.00,-1,'cjhadmin','福州'),(269,'火鸡','2018-03-20',23.00,23.00,23.00,-1,'cjhadmin','福州'),(270,'老母鸡','2018-03-19',45.00,245.00,45.00,-1,'cjhadmin','福州'),(271,'计算鸡','2018-03-17',232.00,232.00,23.00,-1,'cjhadmin','福州'),(272,'童子鸡','2018-03-16',10000.00,10000.00,10000.00,1,'ajieshop','仙游'),(273,'战斗鸡','2018-03-10',10000.00,10000.00,10000.00,1,'ajieshop','仙游'),(274,'炸鸡','2018-03-25',10000.00,10000.00,1000.00,1,'ajieshop','仙游'),(275,'童子鸡','2018-03-20',232.00,235.00,36.00,-1,'ajieshop','仙游'),(276,'战斗鸡','2018-03-24',226.00,100.00,10.00,-1,'ajieshop','仙游'),(277,'炸鸡','2018-03-23',21.00,223.00,23.00,-1,'ajieshop','仙游'),(278,'童子鸡','2018-03-22',11.00,111.00,11.00,-1,'ajieshop','仙游'),(279,'战斗鸡','2018-03-21',22.00,222.00,22.00,-1,'ajieshop','仙游'),(280,'童子鸡','2018-03-19',232.00,232.00,36.00,-1,'ajieshop','仙游'),(281,'战斗鸡','2018-03-18',226.00,222.00,10.00,-1,'ajieshop','仙游'),(282,'炸鸡','2018-03-21',21.00,223.00,23.00,-1,'ajieshop','仙游'),(283,'童子鸡','2018-03-18',11.00,111.00,11.00,-1,'ajieshop','仙游'),(284,'战斗鸡','2018-03-17',22.00,224.00,22.00,-1,'ajieshop','仙游'),(285,'炸鸡','2018-03-25',22.00,55.00,55.00,-1,'ajieshop','仙游'),(286,'火鸡','2018-02-25',23.00,23.00,23.00,-1,'cjhadmin','福州'),(287,'老母鸡','2018-02-22',45.00,245.00,69.00,-1,'cjhadmin','福州'),(288,'计算鸡','2018-02-27',232.00,232.00,85.00,-1,'cjhadmin','福州'),(289,'炸鸡','2018-02-20',22.00,98.00,55.00,-1,'ajieshop','仙游'),(290,'炸鸡','2018-02-26',22.00,68.00,55.00,-1,'ajieshop','仙游'); 128 | /*!40000 ALTER TABLE `allHandleType` ENABLE KEYS */; 129 | UNLOCK TABLES; 130 | 131 | -- 132 | -- Table structure for table `cjhadmin` 133 | -- 134 | 135 | DROP TABLE IF EXISTS `cjhadmin`; 136 | /*!40101 SET @saved_cs_client = @@character_set_client */; 137 | /*!40101 SET character_set_client = utf8 */; 138 | CREATE TABLE `cjhadmin` ( 139 | `tare` decimal(15,2) NOT NULL, 140 | `suttle` decimal(15,2) NOT NULL, 141 | `price` decimal(15,2) NOT NULL, 142 | `chickType` varchar(20) NOT NULL, 143 | PRIMARY KEY (`chickType`), 144 | UNIQUE KEY `chickType_UNIQUE` (`chickType`) 145 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 146 | /*!40101 SET character_set_client = @saved_cs_client */; 147 | 148 | -- 149 | -- Dumping data for table `cjhadmin` 150 | -- 151 | 152 | LOCK TABLES `cjhadmin` WRITE; 153 | /*!40000 ALTER TABLE `cjhadmin` DISABLE KEYS */; 154 | INSERT INTO `cjhadmin` VALUES (19900.00,19770.00,150.00,'吹风鸡'),(9977.00,9977.00,100.00,'火鸡'),(9955.00,9755.00,10000.00,'老母鸡'),(9768.00,9768.00,20.00,'计算鸡'); 155 | /*!40000 ALTER TABLE `cjhadmin` ENABLE KEYS */; 156 | UNLOCK TABLES; 157 | 158 | -- 159 | -- Table structure for table `history` 160 | -- 161 | 162 | DROP TABLE IF EXISTS `history`; 163 | /*!40101 SET @saved_cs_client = @@character_set_client */; 164 | /*!40101 SET character_set_client = utf8 */; 165 | CREATE TABLE `history` ( 166 | `message` varchar(1000) NOT NULL, 167 | `pName` varchar(20) NOT NULL, 168 | `date` datetime NOT NULL, 169 | PRIMARY KEY (`date`) 170 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 171 | /*!40101 SET character_set_client = @saved_cs_client */; 172 | 173 | -- 174 | -- Dumping data for table `history` 175 | -- 176 | 177 | LOCK TABLES `history` WRITE; 178 | /*!40000 ALTER TABLE `history` DISABLE KEYS */; 179 | /*!40000 ALTER TABLE `history` ENABLE KEYS */; 180 | UNLOCK TABLES; 181 | 182 | -- 183 | -- Table structure for table `online` 184 | -- 185 | 186 | DROP TABLE IF EXISTS `online`; 187 | /*!40101 SET @saved_cs_client = @@character_set_client */; 188 | /*!40101 SET character_set_client = utf8 */; 189 | CREATE TABLE `online` ( 190 | `pName` varchar(20) NOT NULL, 191 | `username` varchar(20) NOT NULL, 192 | PRIMARY KEY (`username`) 193 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 194 | /*!40101 SET character_set_client = @saved_cs_client */; 195 | 196 | -- 197 | -- Dumping data for table `online` 198 | -- 199 | 200 | LOCK TABLES `online` WRITE; 201 | /*!40000 ALTER TABLE `online` DISABLE KEYS */; 202 | /*!40000 ALTER TABLE `online` ENABLE KEYS */; 203 | UNLOCK TABLES; 204 | 205 | -- 206 | -- Table structure for table `pullChick` 207 | -- 208 | 209 | DROP TABLE IF EXISTS `pullChick`; 210 | /*!40101 SET @saved_cs_client = @@character_set_client */; 211 | /*!40101 SET character_set_client = utf8 */; 212 | CREATE TABLE `pullChick` ( 213 | `tare` decimal(15,2) NOT NULL, 214 | `suttle` decimal(15,2) NOT NULL, 215 | `price` decimal(15,2) NOT NULL, 216 | `sumWeight` decimal(15,2) NOT NULL, 217 | `sumPrice` decimal(15,2) NOT NULL, 218 | `chickType` varchar(20) NOT NULL, 219 | PRIMARY KEY (`chickType`) 220 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 221 | /*!40101 SET character_set_client = @saved_cs_client */; 222 | 223 | -- 224 | -- Dumping data for table `pullChick` 225 | -- 226 | 227 | LOCK TABLES `pullChick` WRITE; 228 | /*!40000 ALTER TABLE `pullChick` DISABLE KEYS */; 229 | /*!40000 ALTER TABLE `pullChick` ENABLE KEYS */; 230 | UNLOCK TABLES; 231 | /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; 232 | 233 | /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; 234 | /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; 235 | /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; 236 | /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; 237 | /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; 238 | /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; 239 | /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; 240 | 241 | -- Dump completed on 2018-05-12 10:11:34 242 | -------------------------------------------------------------------------------- /System.war: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cjinhuo/javaweb-ajax-websocket-mysql/153936af09423d05ee43550ceba647e06d403e42/System.war -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-cayman -------------------------------------------------------------------------------- /video/base.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cjinhuo/javaweb-ajax-websocket-mysql/153936af09423d05ee43550ceba647e06d403e42/video/base.mp4 -------------------------------------------------------------------------------- /video/onlineChat.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cjinhuo/javaweb-ajax-websocket-mysql/153936af09423d05ee43550ceba647e06d403e42/video/onlineChat.mp4 -------------------------------------------------------------------------------- /websocketBase/WebSocket.java: -------------------------------------------------------------------------------- 1 | package com.rigc.cjh.webscoket; 2 | 3 | import java.io.IOException; 4 | import java.util.concurrent.CopyOnWriteArraySet; 5 | 6 | import javax.websocket.OnClose; 7 | import javax.websocket.OnError; 8 | import javax.websocket.OnMessage; 9 | import javax.websocket.OnOpen; 10 | import javax.websocket.Session; 11 | import javax.websocket.server.PathParam; 12 | import javax.websocket.server.ServerEndpoint; 13 | 14 | import com.mysql.fabric.xmlrpc.base.Data; 15 | 16 | 17 | 18 | @ServerEndpoint("/websocket/{username}") 19 | public class WebSocket { 20 | private static int onlineCount = 0; 21 | private String username; 22 | //concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。若要实现服务端与单一客户端通信的话,可以使用Map来存放,其中Key可以为用户标识 23 | private static CopyOnWriteArraySet webSocketSet = new CopyOnWriteArraySet(); 24 | 25 | //与某个客户端的连接会话,需要通过它来给客户端发送数据 26 | private Session session; 27 | 28 | /** 29 | * 连接建立成功调用的方法 30 | * @param session 可选的参数。session为与某个客户端的连接会话,需要通过它来给客户端发送数据 31 | * @throws IOException 32 | */ 33 | @OnOpen 34 | public void onOpen(@PathParam("username") String username,Session session) throws IOException{ 35 | this.username = username; 36 | this.session = session; 37 | webSocketSet.add(this); //加入set中 38 | addOnlineCount(); //在线数加1 39 | System.out.println(username + "加入连接!当前在线人数为" + getOnlineCount()); 40 | String data = username + "加入连接!当前在线人数为" + getOnlineCount(); 41 | String people = ""; 42 | for(WebSocket item: webSocketSet){ 43 | people += item.getUsername(); 44 | } 45 | sendAllClientsMessage(people); 46 | } 47 | 48 | /** 49 | * 连接关闭调用的方法 50 | */ 51 | @OnClose 52 | public void onClose(){ 53 | webSocketSet.remove(this); //从set中删除 54 | subOnlineCount(); //在线数减1 55 | System.out.println("连接关闭!当前在线人数为" + getOnlineCount()); 56 | } 57 | 58 | /** 59 | * 收到客户端消息后调用的方法 60 | * @param message 客户端发送过来的消息 61 | * @param session 可选的参数 62 | */ 63 | @OnMessage 64 | public void onMessage(String message, Session session) { 65 | System.out.println("来自客户端的消息:" + message); 66 | 67 | String data = this.username + ":" + message; 68 | sendAllClientsMessage(data); 69 | //群发消息 70 | 71 | } 72 | 73 | public String getUsername() { 74 | return this.username; 75 | } 76 | 77 | private void sendAllClientsMessage(String data) { 78 | for(WebSocket item: webSocketSet){ 79 | try { 80 | 81 | item.sendMessage(data); 82 | } catch (IOException e) { 83 | e.printStackTrace(); 84 | continue; 85 | } 86 | } 87 | } 88 | 89 | /** 90 | * 发生错误时调用 91 | * @param session 92 | * @param error 93 | */ 94 | @OnError 95 | public void onError(Session session, Throwable error){ 96 | System.out.println("发生错误"); 97 | error.printStackTrace(); 98 | } 99 | 100 | /** 101 | * 这个方法与上面几个方法不一样。没有用注解,是根据自己需要添加的方法。 102 | * @param message 103 | * @throws IOException 104 | */ 105 | public void sendMessage(String message) throws IOException{ 106 | this.session.getBasicRemote().sendText(message); 107 | //this.session.getAsyncRemote().sendText(message); 108 | } 109 | 110 | public static synchronized int getOnlineCount() { 111 | return onlineCount; 112 | } 113 | 114 | public static synchronized void addOnlineCount() { 115 | WebSocket.onlineCount++; 116 | } 117 | 118 | public static synchronized void subOnlineCount() { 119 | WebSocket.onlineCount--; 120 | } 121 | 122 | } 123 | -------------------------------------------------------------------------------- /websocketBase/websocketBase.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | websocket Demo---- user000
9 | 10 | 11 | 12 |
13 | 14 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /websocketjar说明/websocket.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cjinhuo/javaweb-ajax-websocket-mysql/153936af09423d05ee43550ceba647e06d403e42/websocketjar说明/websocket.jar -------------------------------------------------------------------------------- /websocketjar说明/使用说明- jar包.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cjinhuo/javaweb-ajax-websocket-mysql/153936af09423d05ee43550ceba647e06d403e42/websocketjar说明/使用说明- jar包.txt --------------------------------------------------------------------------------