WebSocket在聊天界面的使用,以及踩的一些移动端的坑 (上)

使用webSocket实现移动端与PC端传输图片 需求:我需要把移动端的一个base64图片传到PC端后,由PC端上传第三方接口,得到第三方接口返回的一个合成文件。 下面是我历经千辛万苦后得到的流程结果,我会按照下面如图顺序介绍每一个步骤 我好苦呀 下面开始介绍: 一.获取base64 这里实际是获取电子签名的base64,总之就是拿到一个base64 二.转文件流上传图片 里面的上传图片实际是调用接口,fd已经是可直接上传的formD... 阅读详情


最近在开发一个客服页面,其中包括移动端和pc端。主要运用WebSocket进行与后台进行聊天通讯(当然不兼容WebSocket的使用的是轮询的方式)!

一、WebSocket相比http轮询的优点和缺点?
优点
  • websocket是一种长连接双向通迅的方式,不需要前端一直发送http请求询问后台,客服是否有消息回复。同样的也减少了客户的网络带宽和计算资源。
缺点
  • 各个浏览器的兼容性不一致,以及服务器长期维护长连接需要一定的成本。
  • WebSocket只能传输字符串
二、WebSocket API介绍

详细的API可以查看MDN, 我这里只介绍我在项目里用到的。https://developer.mozilla.org/zh-CN/docs/Web/API/WebSocket

  • WebSocket相当于就是一个构造函数 new WebSocket('ws://localhost:8080')相当于创建了一个websocket链接

  • WebSocket.readyState监听WebSocket的连接状态,

    • 0 表示正在连接
    • 1 表示已经连接并可以通讯了
    • 2 表示正在关闭连接
    • 3 表示连接已经关闭或者连接失败
  • WebSocket.onopen连接成功后会走进此方法

  • WebSocket.onerror 连接失败回调函数

  • WebSocket.onclose连接关闭的回调函数

  • WebSocket.onmessage服务器推送消息之后的回调函数

  • WebSocket.close()主动关闭当前连接

  • WebSocket.send()发送消息给后台

三、WebSocket运用中的注意事项(后期会将实现方式单独写一篇文章)
  • Websocket需要与后台实现一个ping,pong的心跳保持,用于监测服务器是否已经断开连接。
  • WebSocket在移动端会有很多种场景导致连接会断开,所以需要实现一个websocket断开与重连的功能。
  • WebSocket发送消息后,后台是否收到或者是否发送给第三方,需要实现一个消息确认机制,实现逻辑大概是(使用发布订阅模式)前端发送消息的时候带一个uuid并且订阅这个uuid,当后台收到后会返回一个确认消息指令带上这个uuid,然后前端 就可以根据之前订阅接受到的回调写上消息确认的逻辑了。
Spring Boot 结合 WebSocket 实现在线聊天 今天的文章可谓是积蓄了我这几年来的应聘和面试经历总结出来的经验,干货满满呀!如果你能够一直坚持看到这儿,那么首先我还是十分佩服你的毅力的。所以看完之后,还是多多行动起来吧!可以非常负责地说,如果你能够坚持把我上面列举的内容都一个不拉地看完并且全部消化为自己的知识的话,那么你就至少已经达到了中级开发工程师以上的水平,进入大厂技术这块是基本没有什么问题的了。所以看完之后,还是多多行动起来吧! 阅读详情

相关推荐

构建响应式聊天界面:Web端与移动端技术指南

在现代web开发中,HTML(超文本标记语言)不仅是构建网页内容的基础,更是定义复杂用户界面(如聊天界面)组件结构的核心技术。本章节将从HTML的基础知识讲起,逐步深入探讨如何利用HTML的标签系统来构建聊天界面的各种组件。模板引擎如Mustache和Handlebars提供了简单的语法来声明性地渲染数据。这些模板引擎基于数据绑定,允许开发者定义一套模板,并在这些模板中插入动态内容。例如,使用Handlebars模板引擎,我们可以这样定义消息列表模板:</li>{{/each}}

weixin_35757531的博客 1103

WebSocket整合SpringBoot、SockJS、Stomp、Rabbitmq分布式消息推送

(1)HTML5 WebSocket、异常重连、心跳检测;(2)SockJS、Stomp、RabbitMQ Stomp消息代理;(3)分别用Nginx和Spring Cloud Gateway实现多实例负载均衡;(4)可靠消息推送(Stomp持久化队列、客户端ACK确认机制);(5)Java原生、Stomp客户端实现(非浏览器客户端);(6)Websocket拦截器结合 Spring security、jwt token认证授权;(7)Vue前端版本实现、Java客户端实现;(8)消防物联网平台消息推送案例,需求分析、设计思路、编码实现、效果演示。

基于mui框架的移动端聊天应用Demo实战(仅限APP)

简介:本文详解如何使用轻量级前端框架mui构建一个仅适用于移动App的聊天应用Demo,涵盖页面布局、消息展示、数据存储、实时通信与交互功能实现。通过流式布局、CSS消息气泡、本地存储、WebSocket集成及性能优化等技术,帮助开发者快速搭建高效、流畅的聊天界面,适用于HTML5移动应用开发场景。

weixin_35094083的博客 749

Websocket的原理

初学服务器开发, 首先接触的可能是 Http协议进行信息通信,但是在很多场景下简单的http协议并不能满足具体的场景, 这就突出了http(一个简单的请求-响应协议)的单向性,服务器只有接受到前端页面发来的请求, 服务器才能返回相应的数据。当需要满足即时通讯, 就需要采取轮询来方式, 用浏览器向服务器定时发送Request, 然后服务器将最新的数据传给浏览器.

Ming_Robot的博客 252

A股历史数据免费下载终极指南:4000+个股数据一键打包获取

本文提供了获取A股历史数据的完整免费方案,重点介绍了Tushare Pro、AkShare等开源金融数据API的使用方法。通过详细的Python脚本示例,指导读者如何自动化批量抓取、清洗、存储4000多只个股的历史行情数据,并分享数据质量校验与性能优化技巧,助力量化研究与市场分析。

ooo22的博客 2227

STM32MP157+AD7606BSTZ四通道IEPE传感器采集方案实战(附完整电路图)

本文详细介绍了基于STM32MP157和AD7606BSTZ的四通道IEPE传感器采集方案,涵盖硬件电路设计、软件驱动开发及系统性能优化。通过精确的恒流源设计和同步采样技术,实现高精度振动信号采集,适用于工业振动监测等应用场景。

weixin_42713608的博客 701

WebSocket消息防丢ACK和心跳机制对信息安全性的作用及实现方法

ACK(Acknowledgment)机制是一种确认机制,用于确保消息在网络通信中不丢失。在WebSocket通信中,消息发送方在发送消息后,等待接收方的确认(ACK)消息,只有在收到确认后,发送方才认为消息成功传递。如果在一定时间内没有收到确认,发送方会重发消息,直到收到确认为止。心跳机制是一种保持连接活跃的技术,主要用于检测连接的健康状态并防止长时间不活动导致连接断开。在WebSocket连接中,心跳机制通常通过定期发送“心跳”消息来维持连接。

百锦再的博客 2万+

什么是PMOS?什么是NMOS?两者有什么区别?

这个电压差被称为阈值电压(Vth),通常为0.7V至2V(低压NMOS)或4V至10V(功率NMOS)。当Vgs(栅极-源极电压)大于Vth时,沟道中的电子被吸引到栅极下方,形成导电通路,使电流可以从漏极流向源极。NMOS与PMOS的结构类似,都由三大部分组成:栅极(Gate)、源极(Source)和漏极(Drain)。由于NMOS在开启时,电子是主要的载流子,电子的迁移率比空穴高,因此NMOS通常具有更低的导通电阻(Rds(on)),这使其成为高速开关电路中的首选。它的沟道由电子(负载子)传导。

硅农深芯的博客 6434

Sptring Boot 实时消息推送:DeferredResult、WebSocket

目录 WebAppRootListener 项目开发 运行流程 补充说明 ContextLoaderListener WebAppRootListener WebAppRootListener的作用就是监听web.xml中的配置<context-param> 下<param-name>webAppRootKey</param-name>的值 有如...

蚩尤后裔-汪茂雄 2938

[WeChatMsg]导出csv格式微信聊天记录的手把手教程

手把手教大家如何导出自己的聊天记录得到csv文件,即使是电脑小白也可以轻松学会o(* ̄▽ ̄*)ブ

weixin_51094633的博客 1万+

34、实数域上高效负循环卷积算法解析

本文介绍了一种高效的实数域负循环卷积算法,通过引入离散傅里叶负循环变换(DFNT)避免传统方法的冗余,显著提升计算效率。文章详细分析了算法原理、误差传播机制,并推导出误差与方差界,提出无误差和基于3σ规则的参数设置方案。结合Cooley-Tukey与Gentleman-Sande FFT路径优化,实验验证了算法在不同精度和多项式长度下的性能优势与结果正确性,为密码学与信号处理等领域提供了高精度、高性能的卷积计算解决方案。

salt的博客 114

WebSocket学习笔记

1、什么是WebSocket 定义:WebSocket是一种区别于HTTP协议的通信协议,可在单个TCP连接上进行全双工通信。 主要功能:提供客户端和服务端的双向数据推送 应用场景:实时弹幕、股票、在线聊天等 特点: 握手阶段采用 HTTP 协议。 数据格式轻量,性能开销小。客户端与服务端进行数据交换时,服务端到客户端的数据包头只有2到10字节,客户端到服务端需要加上另外4字节的掩码。而HTTP请求每次都需要携带完整头部。 更好的二进制支持,可以发送文本,和二进制数据 没有同源限制,客户端可以与任意

Polaris_tl的博客 1040

YOLOv11改进策略【Neck】| GFPN 超越BiFPN 通过跳层连接和跨尺度连接改进v11颈部网络

本文记录的是利用颈部结构优化YOLOv11的目标检测网络模型。利用改进后的颈部网络,通过跳层连接,避免了在进行反向传播时的梯度消失问题,并且引入跨尺度连接,可以实现不同级别和层次的特征充分融合,获取足够的高层语义信息和低层空间信息交换,从而在大规模变化场景下提高检测性能。GIRAFFEDET: A HEAVY-NECK PARADIGM FOR OBJECT DETECTION-GFPN包含了上述的跳层连接(dense-link和log2nlog _{2} nlog2​n-link)以及跨尺度连接(Quee

Limiiiing的博客 3005

利用websocket实现web端在线客服实时聊天系统

websocket实现web端在线聊天

博客 1万+

实验三、数字PID控制器的设计

由图可知,由于微分环节的作用,在曲线的起始上升段出现了一个尖锐的波峰,之后曲线也呈衰减的振荡:随着Td增加,系统的超调量增大,但曲线尖锐的起始上升阶段后响应速度减慢,可以看出Td越小。对大多数算法,缩短采样周期可使控制回路性能改善,但采样周期缩短时,频繁的采样必然会占用较多的计算工作时间,同时也会增加计算机的计算负担,而对有些变化缓慢的受控对象无需很高的采样频率即可满意地进行跟踪,过多的采样反而没有多少实际意义。随着Kp的增加,闭环系统的超调量增加,响应速度加快,控制时间加长,稳态误差减少;

m0_51738372的博客 8023

单片机设计具备断电记忆功能的计时器

本文介绍了如何设计一款具备断电记忆功能的计时器,利用单片机和EEPROM存储器实现了计时器值的保存和恢复。当然,在实际的设计中还需要考虑其他因素,如电源管理、时钟精度等,以确保计时器的正常运行和准确性。选择合适的单片机:在设计计时器时,我们需要选择一款具备存储功能的单片机,以便在断电后能够保存计时器的状态。可以优化显示方式,使用更加直观的界面来展示计时器的值;函数中,我们首先从 EEPROM 中读取计时器的初始值,然后在一个无限循环中每秒钟增加计时器的值,并将新的值写入 EEPROM 中。

RlDart的博客 1094

【PC端聊天功能模板】vue-elementul简单实现电脑端客服聊天功能,pc端聊天系统静态页面布局,配套websocket方案和心跳重连机制【详细注释,拿来即用】

这里是给大家写了一个简单的模板来使用,可以直接复制了调调就能用。因为这个聊天也是很容易出现的功能,所以我写一个模板静态页面放在这,以后需要这个功能的时候可以不用布局了,直接复制改改。我的代码里面有详细的注释,相信就算是刚学完前端的萌新也是看得懂的,如果有不懂得可以提问1,页面布局自适应缩放2,点击在线可以切换客服状态,忙碌,离线,退出登录等3,模糊搜索用户列表功能4,点击用户会变底色并切换用户的聊天信息5,刚进入时不点击选中用户时隐藏发送按钮和禁用输入框。......

seeeeeeeeeee的博客 1万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

WebSocket实践: 实现小型移动端聊天室

项目介绍 WebSocket 是流行的数据交互方式,在学习了 websocket 后,打算使用 vue + websocket + mysql 来完成一个小型的移动端聊天室,简单的实现登录、注册、发送消息等操作。进一步巩固自己对 vue 和 nodeJs 的掌握。 项目地址 项目采用了: vux: 移动端UI 框架 vue-router 路由管理 socket.io 创建 websocket 服...

weixin_34416649的博客 1042

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

vue基于websocket实现智能聊天及吸附动画效果

发现这篇文章写的有点多,我总结一下整体思路: 首先这个功能市面上挺多的,我是参考了几家公司的功能实现,发现他们的整体功能实现和下面我的截图类似。 首先核心功能是基于websocket实现用户输入文字服务器根据用户输入返回数据渲染在页面上,而这个功能我不推荐直接使用原生,而是使用封装好的,就像文章里封装的socket.js,这个文件很简单就对外提供三个方法,一个是和后端通信连接,再一个是接收后端的数据,最后一个是发送数据给后端。 其次,我们需要一个聊天框,我使用的Jwchat插件,优点是功能

接着奏乐接着舞的博客 5254

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【SpringBoot框架篇】18.使用Netty加websocket实现在线聊天功能

使用netty加websocket实现在线聊天功能

皓亮君的博客 1万+

uniapp 移动端 聊天框 获取聊天历史记录

做一个类似淘宝客服聊天框的功能在这里插入代码片 <template> <view class="content"> <view class="cul-wrapper"> <view v-if="isOver" class="msg-over">没有更多消息了</view> <block v-for="(item,index) in hisMsgs" :key="item.id"> <view :class

qq_39650950的博客 3276

WebSocket 简单的聊天 pc与移动端通信

nginx webSocket pc与移动端互联

幸福有多远 1278

Spring Boot 结合 WebSocket 实现在线聊天,前端组件化开发

javascript是前端必要掌握的真正算得上是编程语言的语言,学会灵活运用javascript,将对以后学习工作有非常大的帮助。掌握它最重要的首先是学习好基础知识,而后通过不断的实战来提升我们的编程技巧和逻辑思维。这一块学习是持续的,直到我们真正掌握它并且能够灵活运用它。如果最开始学习一两遍之后,发现暂时没有提升的空间,我们可以暂时放一放。继续下面的学习,javascript贯穿我们前端工作中,在之后的学习实现里也会遇到和锻炼到。真正学习起来并不难理解,关键是灵活运用。

2401_84091321的博客 1480

10-vue移动端项目(websocket的简单案例与创建一个聊天室)

WebSocket 01- 什么是WebSocket 它与 http 协议一样,也是一种通讯协议 http 协议: 作用:规范浏览器与服务器交互的一种标准。 特点: 每次浏览器与服务器之间进行交互都需要重复开启和断开连接 请求只能由浏览器主动发送,服务器被动响应 总结: 由于以上两个特点,让 http 协议在某些场合下不适用。比如说:实时聊天。 websocket 协议: 它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话

Tangoneone的博客 1546

jq封装websocket插件,实现聊天室重连机制、心跳机制

此jq封装方法来自于这里 代码简单易懂,如下: //jqwebsocket.js //==========websocket (function($) { $.websocket = function(options) { var defaults = { domain: top.location.hostname, port...

Linzsong的博客 2311

vue websocket 实现客服聊天功能(基础实现)

本文章主要介绍如何实现一个基本的聊天,后续会添加表情包,传照片等功能 其实刚开始接触的时候,我最大的疑惑是聊天功能的前期是否需要搭建什么框架,下载一些什么之类的,结果就是其实websocket可以直接使用,然后前后端搭配,也是免费的,没发现需要收费功能的东西。 实现效果图~ 首先封装一个websocket.js文件(大家可以直接复制,然后把接收数据之类的格式改成自己的就可以啦) import store from '@/store' var webSocket = null; var globalCall

唯心所现,唯识所变 9283
下一篇: 前端必备设计模式
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值