在线聊天室项目
文章平均质量分 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 · 3951 阅读 · 30 评论 -
Web在线聊天室(12) --- 收发消息(单例模式+阻塞式队列)
websocket的理解 基于代码理解 客户端和服务端建立连接,就产生一个新的webSocket对象,所以不存在线程安全问题(Servlet是一个实例对象,多线程操作一个对象存在线程安全问题) 理论上的实现 异步,事件驱动,io模型的理论原理 从网卡拿到数据,然后系统决定数据怎么交给进程,都是io的操作,由io的模型来决定如何交付数据 websocket的实现,是基于事件驱动,异步的方式(原理叫作io多路复用) 注册一个事件后,java进程(web项目不用一直阻塞等待io数据返回)【程序该做啥就做啥,系原创 2021-05-29 21:32:08 · 1230 阅读 · 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 · 1441 阅读 · 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 · 258 阅读 · 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 · 421 阅读 · 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 · 274 阅读 · 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 · 251 阅读 · 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 · 1127 阅读 · 1 评论 -
Web在线聊天室(5) --- 异常类+工具类+实体类
通用工具类代码原创 2021-05-22 18:25:26 · 269 阅读 · 1 评论 -
Web在线聊天室(4) --- 详细设计
业务背景:张三要发送消息给李四 实现: (1)客户端点到点发送消息 (2)服务端转发消息(我们采取这种方式) 流程: 张三发送消息给服务端 服务端发送消息给李四 这种是基于http协议的与服务端建立连接相互请求和响应 我们会采取这种方式来实现消息发送。 这种方式用http去实现是不行的 (1)因为http是短连接,无状态的,一次请求完了服务器一次响应后就会断开连接。 (2)服务器端的 ip 是开放在公网的,所有人能访问;而客户端的 ip 是不开放的(服务端不知道),所以服务器端不能主动给客户端发送消原创 2021-05-21 20:33:03 · 1798 阅读 · 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 · 456 阅读 · 5 评论 -
Web在线聊天室(2) --- 技术实现原理
技术实现原理实现技术原理(一)Session(二)Ajax 技术(三)消息推送轮询方式长轮询长连接webSocket此项目中的webSocket 实现技术原理 (一)Session 同一个浏览器,即便有多个标签页,也是保存相同的session session生命周期: (1)登录系统没有注销 (2)没有超时 原理:session基于cookie实现的 作用:解决未登录敏感资源的访问问题(更安全) 代码: [登陆时:账号密码验证通过后 request.getSession(); //默认是true ] [登录原创 2021-05-18 21:37:03 · 2524 阅读 · 5 评论 -
Web在线聊天室(1) --- 需求分析及准备工作
这里写目录标题软件的生命周期业务:在线聊天室项目背景需求分析(一)注册用户(二)登录账号(三)频道中收发消息(四)新登录用户收到消息开发web项目的流程前提准备(一)配置servlet项目(二)idea 中配置 tomcat(三)配置pom文件 软件的生命周期 业务人员提需求 产品经理产出产品(线框图,原型图) 系统设计(概设,详设) 开发 测试 部署 所以我们先解决我们的需求 业务:在线聊天室 项目背景 消息推送实现方案 需求分析 (一)注册用户 先可以点击注册按钮来注册新的用户 (二)登录账号 登原创 2021-05-18 21:29:19 · 2474 阅读 · 12 评论
分享