在线聊天室项目
文章平均质量分 67
满眼*星辰
一名努力学习编程的大三学生
展开
-
Web在线聊天室(完结) --- 注册用户+ip地址
注册用户接口设计请求:POST /register{ name: xxx, password: xxx, nickName: "蔡徐坤", signature: "我擅长唱跳rap篮球",}响应:HTTP/1.1 200 OK{ ok: 1, reason: xxx}前端异步回调ajax函数 register(){ $.ajax({ url: 'register', type: 'post'原创 2021-05-31 18:05:32 · 3810 阅读 · 30 评论 -
Web在线聊天室(12) --- 收发消息(单例模式+阻塞式队列)
websocket的理解基于代码理解客户端和服务端建立连接,就产生一个新的webSocket对象,所以不存在线程安全问题(Servlet是一个实例对象,多线程操作一个对象存在线程安全问题)理论上的实现异步,事件驱动,io模型的理论原理从网卡拿到数据,然后系统决定数据怎么交给进程,都是io的操作,由io的模型来决定如何交付数据websocket的实现,是基于事件驱动,异步的方式(原理叫作io多路复用)注册一个事件后,java进程(web项目不用一直阻塞等待io数据返回)【程序该做啥就做啥,系原创 2021-05-29 21:32:08 · 1010 阅读 · 2 评论 -
Web在线聊天室(11) --- 登陆后显示历史消息
目录登陆后显示历史消息服务器端onOpen方法查询上次登录后的所有消息websocket服务器端关闭连接操作实现效果登陆后显示历史消息服务器端onOpen方法 @OnOpen public void onOpen(@PathParam("userId") Integer userId, Session session) throws IOException { // 1.把每个客户端的session都保存起来,之后转发消息到所有客户端要用 MessageC原创 2021-05-28 23:32:17 · 1166 阅读 · 1 评论 -
Web在线聊天室(10) --- 插入消息
插入消息消息格式{ "userId": 1, "nickName": "蔡徐坤", "channelId": 1, "content": "这是消息正文"}服务器端onMessage方法 @OnMessage public void onMessage(Session session, String message) { // 1.遍历保存的所有session,每个都发送消息 MessageCenter.sendMessage(message原创 2021-05-28 23:29:42 · 179 阅读 · 0 评论 -
Web在线聊天室(9) --- 退出登录
退出登录删除客户端中保存的session接口设计请求:GET /logout响应:HTTP/1.1 200 OK{ ok: 1, reason: xxx}前端ajax异步回调函数 logout() { console.log("logout"); app.login.isLogin = false; app.user.name = null; $.ajax({ ur原创 2021-05-28 23:22:27 · 333 阅读 · 0 评论 -
Web在线聊天室(8) --- 服务器中换收发消息
目录搭建服务器框架客户端服务器端实现效果收发消息消息传输数据格式编写messageCenter保存websocket需要的信息服务器端调用该类实现效果搭建服务器框架客户端 sendMessage() { let message = { userId: this.user.userId, nickName: this.user.nickName, channelId: this.curChannel原创 2021-05-27 18:04:59 · 202 阅读 · 0 评论 -
Web在线聊天室(7) --- 查询频道列表
查询频道列表接口接口设计文档请求:GET /channel响应:HTTP/1.1 200 OK[ ok:true reason:xxx data{ channelId: 1, channelName: xxx }]编写前端ajax回调函数 getChannels() { $.ajax({ type: "get", url: "channel", success: functi原创 2021-05-27 18:02:47 · 178 阅读 · 1 评论 -
Web在线聊天室(6) --- login登录接口
目录登录接口接口设计文档编写servlet实现dopost方法编写操作数据库方法实现结果检测登录接口接口设计文档编写servlet实现doget方法实现效果登录接口接口设计文档请求:POST /login{ name: xxx, password: xxx}响应:HTTP/1.1 200 OK{ ok: true, reason: xxx, userId: xxx, name: xxx, nickName: xxx, signature: xxx}编写servlet原创 2021-05-22 21:45:25 · 961 阅读 · 1 评论 -
Web在线聊天室(5) --- 异常类+工具类+实体类
通用工具类代码原创 2021-05-22 18:25:26 · 212 阅读 · 1 评论 -
Web在线聊天室(4) --- 详细设计
业务背景:张三要发送消息给李四实现:(1)客户端点到点发送消息(2)服务端转发消息(我们采取这种方式)流程:张三发送消息给服务端服务端发送消息给李四这种是基于http协议的与服务端建立连接相互请求和响应我们会采取这种方式来实现消息发送。这种方式用http去实现是不行的(1)因为http是短连接,无状态的,一次请求完了服务器一次响应后就会断开连接。(2)服务器端的 ip 是开放在公网的,所有人能访问;而客户端的 ip 是不开放的(服务端不知道),所以服务器端不能主动给客户端发送消原创 2021-05-21 20:33:03 · 1549 阅读 · 0 评论 -
Web在线聊天室(3) --- WebSocket练手Demo
WebSocket练手流程服务器代码package org.example.test;import javax.websocket.*;import javax.websocket.server.PathParam;import javax.websocket.server.ServerEndpoint;import java.io.IOException;@ServerEndpoint(value="/test/{userId}")public class TestWebSocket原创 2021-05-18 21:39:28 · 357 阅读 · 5 评论 -
Web在线聊天室(2) --- 技术实现原理
技术实现原理实现技术原理(一)Session(二)Ajax 技术(三)消息推送轮询方式长轮询长连接webSocket此项目中的webSocket实现技术原理(一)Session同一个浏览器,即便有多个标签页,也是保存相同的sessionsession生命周期:(1)登录系统没有注销(2)没有超时原理:session基于cookie实现的作用:解决未登录敏感资源的访问问题(更安全)代码:[登陆时:账号密码验证通过后 request.getSession(); //默认是true ][登录原创 2021-05-18 21:37:03 · 2266 阅读 · 5 评论 -
Web在线聊天室(1) --- 需求分析及准备工作
这里写目录标题软件的生命周期业务:在线聊天室项目背景需求分析(一)注册用户(二)登录账号(三)频道中收发消息(四)新登录用户收到消息开发web项目的流程前提准备(一)配置servlet项目(二)idea 中配置 tomcat(三)配置pom文件软件的生命周期业务人员提需求产品经理产出产品(线框图,原型图)系统设计(概设,详设)开发测试部署所以我们先解决我们的需求业务:在线聊天室项目背景消息推送实现方案需求分析(一)注册用户先可以点击注册按钮来注册新的用户(二)登录账号登原创 2021-05-18 21:29:19 · 2257 阅读 · 12 评论