推广 热搜: 可以  搜索引擎  page  企业  百度  个数  使用  选择  音视频  行业 

【项目】—— 基于websocket协议的网页版群聊系统

   日期:2024-12-21     移动:http://ww.kub2b.com/mobile/quote/8660.html
  • 使用开源websocket和mongoose框架编写网页版本的群聊即时通信工具
  • 使用HTTP+mongoose+session+MySQL+jsoncpp的技术构成,完成IM工具
  • C++11 STL
  • HTTP协议
  • websocket协议
  • session和cookie理解
  • MySQL c connect
  • 登录注册,session管理
  • mongoose框架框架理解
  • jsoncpp

了解websocket

WebSocket是一种协议,与HTTP协议一样位于应用层,都是TCP/IP协议的子集。HTTP协议是单向通信协议,只有客户端发起HTTP请求,服务端才会返回数据,那我们来考虑一下,我们在聊天的时候向服务器主动发送信息能够通过HTTP协议实现,但是我们没有办法通过HTTP协议让服务器向我们发送信息,这样就达不到我们想要的聊天效果,因此我就需要借助WebSocket协议了。因为WebSocket协议是双向通信协议,在建立连接之后,客户端和服务器都可以主动向对方发送或接受数据。
WebSocket协议建立的前提需要借助HTTP协议,建立连接之后,持久连接的双向通信就与HTTP协议无关了。

WebSocket协议的目标是在一个独立的持久连接上提供全双工双向通信。客户端和服务器可以向对方主动发送和接受数据。在JS中创建WebSocket后,会有一个HTTP请求发向浏览器以发起请求。在取得服务器响应后,建立的连接会使用HTTP升级将HTTP协议转换为WebSocket协议。也就是说,使用标准的HTTP协议无法实现WebSocket,只有支持那些协议的专门浏览器才能正常工作。

WebSocket是应用层协议是TCP/IP协议的子集,通过HTTP/1.1协议的101状态码进行握手。也就是说,WebSocket协议的建立需要先借助HTTP协议,在服务器返回101状态码之后,就可以进行websocket 全双工双向通信,就没有HTTP协议什么事情了

协议升级格式
  • 客户端请求
 
  • 服务器回应
 

解释一下几个关键词

  • Connection:Connection必须设置为Upgrade,表示客户端希望连接升级
  • Upgrade:Upgrade必须设置为WebSocket,表示在取得服务器响应之后,使用HTTP升级将HTTP协议转换(升级)为WebSocket协议。
  • Sec-WebSocket-key:随机字符串,用于验证协议是否为WebSocket协议而非HTTP协议
  • Sec-WebSocket-Version:表示使用WebSocket的哪一个版本
  • Sec-WebSocket-Accept:根据Sec-WebSocket-Accept和特殊字符串计算。验证协议是否为WebSocket协议
  • Sec-WebSocket-Location:与Host字段对应,表示请求WebSocket协议的地址
  • HTTP/1.1 101 Switching Protocols:101状态码表示升级协议,在返回101状态码后,HTTP协议完成工作,转换为WebSocket协议。此时就可以进行全双工双向通信了。

具体HTTP升级为WebSocket可参考博客 HTTP升级为WebSocket
其实我的项目为了能够简单一些,并没有自己写将HTTP升级为WebSocket协议的请求,而是借助mongoose框架中的接口进行实现,说到这我们就简单介绍一下mongoose框架

mongoose

Mongoose是c语言写成的网络库。它为TCP、UDP、HTTP、WebSocket、CoAP、MQTT实现了事件驱动型的非阻塞api。其具有以下特性:

  • 跨平台:可在linux/unix macos QNX eCos Windows Android Iphone FreeRtos上运行
  • 原生支持PicoTCP的嵌入式tcp/ip协议栈,支持LWIP嵌入式tcp/ip协议栈
  • 单线程,异步,非阻塞核心与简单的基于事件的API

在运行和占用很小的内存,源代码符合ISO C 和ISO c++规范,使用时,仅需要包含mongoose.c mongoose.h 到我们的项目即可完成整合。Mongoose使嵌入式网络编程快速,健壮,轻松

项目代码编写

这里我想分为四部分来介绍项目的代码实现

  • 首先是实现我们网页的聊天功能
  • 将数据库接入,让我们能够通过代码访问我们的数据库
  • 准备前端页面,为前端页面添加Ajax,使前后端数据json交互
  • 最后就是给我们的项目添加session和cookie
网页聊天功能

在实现之前,我们得来想一想实现一个网页聊天功能我们到底需要做些什么,无非我们需要处理的事情就是4件事

  • 第一个就是处理客户端发起的HTTP请求,请求能够在我们的网页进行聊天
  • 第二就是客户端发起的将HTTP协议升级为WebSocket协议的请求
  • 第三就是处理客户端发送的聊天信息,由于我们是群聊系统,肯定得让所有在线的客户都收到聊天信息
  • 第四个就是处理有客户端退出,要断开连接的请求
 
 
定期检查session是否失效
创建session,主要session ID
销毁session,id = 0
本文地址:http://ww.kub2b.com/quote/8660.html     企库往 http://ww.kub2b.com/ ,  查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


0相关评论
相关最新动态
推荐最新动态
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号