websocket 发送图片_基于WebSocket的web端IM即时通讯应用的开发

基于WebSocket的web端IM即时通讯应用的开发


功能列表:

1、Web端的IM即时通讯应用

2、支持上线、下线、实时在线提醒

3、单聊、群聊的建立

4、普通文字、表情、图片的传输(子定义富文本)

5、单人的顶级提醒,多对话的窗口的提醒

6、调用图灵机器人的自动回复演示

目前的兼容性未做太多测试,主要是谷歌浏览器。

核心技术列表

1、websocket、sockjs、stomp

2、前端展示涉及的jquery、vue、elementUI、jquerybase64js

3、后端springboot、jsoup、spring-security、spring-websocket

成果展示:

dbd86b7323d68ac03e5a4fa2d3164f93.png
0928b05972348e3c06148f7728dcc1bf.png
8d947aab522164ba791bc82612809d01.png
aff076cf27fce0b43878c9c2e1227b1d.png

技术实现说明:

Websocket部分

web端的IM应用,要想实现两个客户端的通信,必然要通过服务器进行信息的转发。例如A要和B通信,则应该是A先把信息发送给IM应用服务器,服务器根据A信息中携带的接收者将它再转发给B,同样B到A也是这种模式。

而要实现web端的实时通讯,websocket也是其中最好的方式,其他的协议如长轮询、短轮询、iframe数据、htmlfile等。

在实际开发中,我们通常使用的是一些别人写好的实时通讯的库,比如socket.io、sockjs(我们本次使用了他,类似jquery,对其他即时通讯技术做了封装),他们的原理就是将上面(还有一些其他的如基于Flash的push)的一些技术进行了在客户端和服务端的封装,然后给开发者一个统一调用的接口。这个接口在支持websocket的环境下使用websocket,在不支持它的时候启用上面所讲的一些hack技术。

WebSocket是HTML5的一种新通信协议(ws协议),是一个消息架构,不强制使用任何特定的消息协议,它依赖于应用层解释消息的含义;与处在应用层的HTTP不同,WebSocket处在TCP上非常薄的一层,会将字节流转换为文本/二进制消息,因此,对于实际应用来说,WebSocket的通信形式层级过低,因此,可以在 WebSocket 之上使用 STOMP协议,来为浏览器 和 server间的 通信增加适当的消息语义。

STOMP(Simple Text-Orientated Messaging Protocol) 面向消息的简单文本协议。 同 HTTP 在 TCP 套接字上添加请求-响应模型层一样,STOMP 在 WebSocket 之上提供了一个基于帧的线路格式层,用来定义消息语义;

STOMP 源码http://cdn.bootcss.com/stomp.js/2.3.3/stomp.js,有兴趣的可以看一下能大致了解其原理和用法。

本例程序核心代码:

var socket = new SockJS('/im-websocket');stompClient = Stomp.over(socket);//设置stomp 控制台日志为不输出stompClient.debug=null;stompClient.connect({}, function (frame) { // 相当于连接 ws://localhost:8080/gs-guide-websocket/041/hk5tax0r/websocket hk5tax0r就是sessionid console.log("正在连接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/559367.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP定时抽奖怎么实现的,PHP 实现抽奖逻辑

public static function get_rand($proArr) {$result "";//概率数组的总概率精度$proSum array_sum($proArr);//概率数组循环foreach ($proArr as $key > $proCur) {$randNum mt_rand(1, $proSum);if ($randNum < $proCur) {$result $key;break;} else {$p…

绿盟漏洞扫描_主机安全漏洞解决方案

前几天发了一篇等保2.0的文章(等保2.0简单介绍 )&#xff0c;文章里面提到&#xff0c;相比于等保1.0标准&#xff0c;等保2.0很大幅度上对安全通用要求的一些控制项做了大幅精简&#xff0c;但是等保二级的要求仍多达135项、等保三级多达211项。https://mp.weixin.qq.com/s/kE…

采用光线跟踪绘制场景 c++_光线追踪的相干性聚集:硬件光线追踪的优势

尽管在理论上实现现代GPU的方法是无限的&#xff0c;但真正有效的方法是切实地了解问题并着手将方案变为现实。制造现代高性能半导体器件以及试图加速当前可编程光栅化技术所面临的问题揭示了GPU硬件行业发展的未来趋势。例如在现代GPU中SIMD处理和固定功能纹理单元是必不可少的…

xxljob 配置具体定时任务_分布式任务调度: XXL-Job

1 任务调度中心搭建、部署、任务管理与监控[1]任务调度中心页面2 SpringBoot 集成 xxl-job&#xff1a;创建调度任务maven项目pom.xml引入依赖:<dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId><version>…

前端白屏问题_深入理解前端性能监控

在同样的网络环境下&#xff0c;有两个同样能满足你的需求的网站&#xff0c;一个唰的一下就加载出来了&#xff0c;另一个白屏转圈转了半天内容才出来&#xff0c;如果让你选择&#xff0c;你会用哪一个&#xff1f;页面的性能问题是前端开发中一个重要环节&#xff0c;但一直…

信号的采样与恢复matlab实验报告,实验七 连续信号的采样与恢复

一、实验目的通过MATLAB仿真验证抽样定理&#xff0c;进一步加深对抽样定理的理解。二、实验原理1. 连续信号的采样对某一连续时间信号f(t)的采样原理图为&#xff1a;由图可知&#xff0c;&#xff0c;其中&#xff0c;单位冲激采样信号的表达式为&#xff1a; 其傅里叶变换为…

treegrid 如何获取getchanges inserted_如何避开Vue性能优化之路的荆棘?

随着这几年前端技术快速发展&#xff0c;Vue框架在国内普及率极高&#xff0c;人人都会用&#xff0c;那Vue如何写得比别人优雅&#xff1f;如何写得比别人漂亮&#xff1f;鉴于一线互联网大厂在前沿技术领域的持续研究和大规模投入&#xff0c;直接向他们取经&#xff0c;是最…

matlab+信号+mpf,Python和Matlab中平均频率的差异

我有这个EMG signal&#xff0c;我想根据这个article绘制平均功率频率。我使用以下代码在Matlab中实现它&#xff1a;clear all;close all;EMGload(EMG.txt);N1000; %my windowz1;fs200 %sampling ratefor i1:length(EMG)-NDUM0;NUM0;FTfft(EMG(i:iN-1));psdFT.*conj(FT);NFFTl…

matlab和vlfeat关联,VLFeat在matlab和vs中安装

转&#xff1a;http://blog.csdn.net/u011718701/article/details/51452011博主最近用vlfeat库做课题&#xff0c;网上搜索使用方法&#xff0c;一大片都会告诉你说&#xff1a;run(/vl_setup) 然后就好啦哈哈哈哈哈哈~~~~~~~~~~~~~~But!理想很丰满&#xff0c;现实很骨感&…

document.createelement如何绑定点击事件_番外篇-EXCEL如何使用宏(VBA)

小编&#xff0c;会在后续推送一些关于VBA(宏)相关的文章(之前其实也推送了一些&#xff0c;其中也大概说了一下如何使用)&#xff0c;所以我们今天就专门写一篇如何使用宏&#xff0c;方便大家使用已经写好的宏。如何使用宏&#xff1a;常规宏VBA-一般都是此类1、调出-开发工具…

局域网打印机反应慢_为什么你的Excel这么慢,这些原因必须要知道!

Excel是很多人的高频办公工具&#xff0c;但大家或多或少地遇到过&#xff0c;有时自己电脑的Excel很慢&#xff0c;导致工作的效率不高&#xff0c;可能就会导致要加班加点&#xff0c;也压缩了自己其他方面的时间。本文将介绍一些常见的Excel”慢“的情况及其解决方案&#x…

linux挂载fc存储有超级坏块_Nand Flash基础知识与坏块管理机制的研究

欢迎FPGA工程师加入官方微信技术群点击蓝字关注我们FPGA之家-中国最好最大的FPGA纯工程师社群概述Flash名称的由来&#xff0c;Flash的擦除操作是以block块为单位的&#xff0c;与此相对应的是其他很多存储设备&#xff0c;是以bit位为最小读取/写入的单位&#xff0c;Flash是一…

carsim中质心加速度_振动CAE分析在空调压缩机支架设计中的应用

【摘要】本文运用有限元分析方法分析空调压缩机系统模态&#xff0c;并通过分析引起振动的激励源&#xff0c;找出压缩机支架和安装螺栓断裂的根本原因&#xff0c;并根据分析提出了解决措施。关键词&#xff1a;空调压缩机支架模态激励共振一、引言发动机轮系需要驱动的工作部…

linux下usb驱动配置文件,Linux环境下USB的原理、驱动和配置

随着生活水平的提高&#xff0c;人们对USB设备的使用也越来越多&#xff0c;鉴于Linux在硬件配置上尚不能全部即插即用&#xff0c;因此关于Linux如何配置和使用&#xff0c;成为困扰我们的一大问题。本文引用地址&#xff1a;http://www.eepw.com.cn/article/70029.htmlinux操…

linux 内核重定位,Linux 内核学习笔记:预备知识之“目标文件”

8种机械键盘轴体对比本人程序员&#xff0c;要买一个写代码的键盘&#xff0c;请问红轴和茶轴怎么选&#xff1f;本文主要阐述 Linux 的目标文件(有可重定位目标文件、可执行目标文件和共享目标文件三种形式)&#xff0c;并把重点放在其格式和案例分析上。注&#xff1a;一般情…

linux虚拟内存api,Linux虚拟内存空间分布-Go语言中文社区

平常总说cpu的位数&#xff0c;其实说的是cpu一次能运算的最长整数的宽度&#xff0c;既ALU(算术逻辑单元)的宽度。cpu的位数也是数据总线的条数数据总线&#xff1a;数据线的总和&#xff0c;数据线就是cpu与内存进行数据传递的通道&#xff0c;一条数据线&#xff0c;一次可以…

2019 d serv 激活_化疗过程中肌肉减少症的发生机制及维生素D、ω-3脂肪酸的作用...

文章来源&#xff1a;蔡丽雅,赵文芝,杨振鹏,贺源,邓丽,张艳,石汉平.肿瘤化疗过程中肌肉减少症的发生机制及维生素D、ω-3脂肪酸的作用[J].中国医学前沿杂志(电子版),2020,12(1):13-19.正 文1998年&#xff0c;Baumgartner等【1】首次提出“肌肉减少症”的概念&#xff0c;用以描…

电脑鸿蒙运行Linux程序,Linux下的Hi3861一站式鸿蒙开发烧录(附工具)-鸿蒙开发烧录工具软件电脑版-东坡下载...

HarmonyOS 智能设备一站式集成开发环境&#xff0c;支持 HarmonyOS 组件按需定制、一键编译和烧录、可视化调试、分布式能力集成等&#xff0c;帮助开发者高效开发和创新新硬件。介绍2021春节前夕&#xff0c;华为发布了 HUAWEI DevEco Device Tool 2.0 Beta1&#xff0c;整体提…

终端软件_DMSTerminal现场管控终端软件正式发布

目前军工企业的信息化建设及管理大多停留在企业内部的管理层&#xff0c;各种任务信息、作业流程等无法直接下达到真正的一线现场层&#xff0c;导致工作在一线的大量技术人员仍然使用传统的纸质工单、纸质记录、口头交流等工作模式进行现场工作。很多工作模式普遍都是以人力来…

深度残差网络_注意力机制+软阈值化=深度残差收缩网络

顾名思义&#xff0c;深度残差收缩网络是由“残差网络”和“收缩”两部分所组成的&#xff0c;是在“残差网络”基础上的一种改进算法。其中&#xff0c;残差网络在2016年斩获了ImageNet图像识别竞赛的冠军&#xff0c;目前已经成为了深度学习领域的基础网络&#xff1b;收缩就…