使用WebSocket实现网页聊天室

服务器推送你还在使用轮询吗本文将带你领略WebSocket的魅力,轻松实现服务器推送功能。本文将以下面两方面让你理解WebSocket并应用到具体的开发中。

WebSocket概述

使用WebSocket实现网页聊天室

二、WebSocket

2.WebSocket介绍

WebSocket是一种网络通信协议。RFC6455定义了它的通信标准。

WebSocket是HTML5开始提供的一种在单个TCP连接上进行全双工通讯的协议。

HTTP协议是一种无状态的、无连接的、单向的应用层协议。它采用了请求/响应模型。通信请求只能由客户端发起,服务端对请求做出应答处理。

这种通信模型有一个弊端:HTTP协议无法实现服务器主动向客户端发起消息。

这种单向请求的特点,注定了如果服务器有连续的状态变化,客户端要获知就非常麻烦。大多数Web应用程序将通过频繁的异步AJAX请求实现长轮询。轮询的效率低,非常浪费资源(因为必须不停连接,或者HTTP连接始终打开)。

websocket协议:

2.websocket协议

本协议有两部分:握手和数据传输。

来自客户端的握手看起来像如下形式:

GETws://localhost/chatHTTP/1.1Host:localhostUpgrade:websocketConnection:UpgradeSec-WebSocket-Key:dGhlIHNhbXBsZSBub25jZQ==Sec-WebSocket-Extensions:permessage-deflateSec-WebSocket-Version:13来自服务器的握手看起来像如下形式:

HTTP/1.1101SwitchingProtocolsUpgrade:websocketConnection:UpgradeSec-WebSocket-Accept:s3pPLMBiTxaQ9kYGzzhZRbK+xOo=Sec-WebSocket-Extensions:permessage-deflate字段说明:

|头名称|说明||:------------------------|------------------------------------------------------------||Connection:Upgrade|标识该HTTP请求是一个协议升级请求||Upgrade:WebSocket|协议升级为WebSocket协议||Sec-WebSocket-Version:13|客户端支持WebSocket的版本||Sec-WebSocket-Key:|客户端采用base64编码的24位随机字符序列,服务器接受客户端HTTP协议升级的证明。要求服务端响应一个对应加密的Sec-WebSocket-Accept头信息作为应答||Sec-WebSocket-Extensions|协议扩展类型|3.客户端(浏览器)实现

3.1websocket对象

实现WebSockets的Web浏览器将通过WebSocket对象公开所有必需的客户端功能(主要指支持Html5的浏览器)。

以下API用于创建WebSocket对象:

varws=newWebSocket(url);>参数url格式说明:ws://ip地址:端口号/资源名称

3.2websocket事件

|事件|事件处理程序|描述|

|-------|-----------------------|--------------------------|

|open|websocket对象.onopen|连接建立时触发|

|message|websocket对象.onmessage|客户端接收服务端数据时触发|

|error|websocket对象.onerror|通信发生错误时触发|

|close|websocket对象.onclose|连接关闭时触发|

3.3WebSocket方法

|方法|描述|

|------|----------------|

|send()|使用连接发送数据|

4.服务端实现

Tomcat的7.0.5版本开始支持WebSocket,并且实现了JavaWebSocket规范(JSR356)。

我们可以通过两种方式定义Endpoint:

第一种是编程式,即继承类javax.websocket.Endpoint并实现其方法。

|方法|含义描述|注解|

|-------|------------------------------------------------------------|--------|

|onClose|当会话关闭时调用。|@OnClose|

|onOpen|当开启一个新的会话时调用,该方法是客户端与服务端握手成功后调用的方法。|@OnOpen|

|onError|当连接过程中异常时调用。|@OnError|

服务端如何接收客户端发送的数据呢

通过为Session添加MessageHandler消息处理器来接收消息,当采用注解方式定义Endpoint时,我们还可以通过@OnMessage注解指定接收消息的方法。

服务端如何推送数据给客户端呢

发送消息则由RemoteEndpoint完成,其实例由Session维护,根据使用情况,我们可以通过Session.getBasicRemote获取同步消息发送的实例,然后调用其sendXxx()方法就可以发送消息,可以通过Session.getAsyncRemote获取异步消息发送实例。

服务端代码:

@ServerEndpoint("/robin")publicclassChatEndPoint{privatestaticSetwebSocketSet=newHashSet<>();privateSessionsession;@OnMessagepublicvoidonMessage(Stringmessage,Sessionsession)throwsIOException{System.out.println("接收的消息是:"+message);System.out.println(session);//将消息发送给其他的用户for(Chatchat:webSocketSet){if(chat!=this){chat.session.getBasicRemote().sendText(message);}}}@OnOpenpublicvoidonOpen(Sessionsession){this.session=session;webSocketSet.add(this);}@OnClosepublicvoidonClose(Sessionseesion){System.out.println("连接关闭了。。。");}@OnErrorpublicvoidonError(Sessionsession,Throwableerror){System.out.println("出错了。。。。"+error.getMessage());}}三、基于WebSocket的网页聊天室

1.需求

通过websocket实现一个简易的聊天室功能。

1).登陆聊天室

2).登陆之后,进入聊天界面进行聊天

登陆成功后,呈现出以后的效果:

当我们想和李四聊天时就可以点击`好友列表`中的`李四`,效果如下:

接下来就可以进行聊天了,“张三”的界面如下:

“李四”的界面如下:

2.实现流程

3.消息格式

客户端-->服务端

{"toName":"张三","message":"你好"}

服务端-->客户端

系统消息格式:{"isSystem":true,"fromName":null,"message":["李四","王五"]}

推送给某一个的消息格式:{"isSystem":false,"fromName":"张三","message":"你好"}

4.功能实现

org.springframework.bootspring-boot-starter-parent2.1.5.RELEASEorg.springframework.bootspring-boot-starter-websocketorg.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-devtoolstruetrueorg.springframework.bootspring-boot-maven-plugin4.2引入静态资源文件

4.3引入公共资源

pojo类

/***@versionv1.0*@ClassName:MessageUtils*@Description:用来封装消息的工具类*@Author:黑马程序员*/publicclassMessageUtils{publicstaticStringgetMessage(booleanisSystemMessage,StringfromName,Objectmessage){try{ResultMessageresult=newResultMessage();result.setIsSystem(isSystemMessage);result.setMessage(message);if(fromName!=null){result.setFromName(fromName);}ObjectMappermapper=newObjectMapper();returnmapper.writeValueAsString(result);}catch(JsonProcessingExceptione){e.printStackTrace();}returnnull;}}4.4登陆功能实现

login.html:使用异步进行请求发送

@RequestMapping("/getUsername")publicStringgetUsername(HttpSessionsession){Stringusername=(String)session.getAttribute("user");returnusername;}4.6聊天室功能

客户端实现

在main.html页面实现前端代码:

`WebSocketConfig`类实现

开启springboot对websocket的支持

@ConfigurationpublicclassWebSocketConfig{@Bean//注入ServerEndpointExporter,自动注册使用@ServerEndpoint注解的publicServerEndpointExporterserverEndpointExporter(){returnnewServerEndpointExporter();}}

THE END
1.刚刚,微信又上新功能!手机私聊通讯录单向好友功能据此前消息,微信Windows PC版发布4.0.1内测更新。除了支持发布朋友圈,还可查看好友的朋友圈相册,可在“聊天文件”中,管理所有聊天中的文件,增加通讯录管理、增加浮窗功能。 新版PC微信进一步完善了好友管理功能。点击左侧「通讯录」按钮,进入通讯录页面后,再点击顶部的「通讯录管理」,在弹出的窗口中,可集中编辑好友https://www.163.com/dy/article/JJ32BV5G05149FJ6.html
2.聊天室软件哪个好?免费视频聊天室聊天室软件下载大全聊天室软件哪个好?好不好用了才知道。目前,市面上已推出了很多款聊天室,如:康福聊天室、uc聊天室、新浪聊天室、聊聊语音聊天室等,为了方便大家下载,绿色资源网小编精心了整理,聚合了最新最热的聊天室软件。在聊天室中,你可以结交到很多志同道合的朋友,还可以充分展示自己的才艺,娱乐交友两不误,绝对的交友神器!有http://www.downcc.com/k/liaotianshi/
3.ChatGPT网页版怎么聊天6. 聊天室中的其他成员将能够看到你的信息,并可以与你进行交流。请注意,ChatGPT网页版上的聊天内容是http://chatgpt.kuyin.cn/ask/361855.html
4.聊天室网友电脑聊天室来爱聊聊天室!爱聊聊天室是国内火爆的在线网友电脑聊天室平台,可以网上聊天、同城聊天交友、网络聊天。爱聊聊天室旗下网友网友超过3万人,每天都有上万个网友参与电脑聊天交友聊天,数万人在线聊天,网友会拥有自己的电脑聊天室,在视频里在线聊天,与粉丝聊天,你也可以和自己喜欢的网友进行聊天室网友电脑聊天。网上卡拉OKhttp://www.loveliao.com/news/z0021.htm
5.聊聊聊聊视频语音聊天室免费视频语音聊天交友登录 点击刷新 为了您的账号安全,请谨慎在公共电脑登录 忘记聊号|忘记密码 登录 其它登录方式http://aq.liaoliao.com/
6.网页在线聊天室网页在线视频聊天室六间房是国内人气火爆的视频网页在线聊天室,以更便捷的方式与网友视频聊天,免去安装聊天室插件的繁琐,获得广大用户好评。有数万个多人视频聊天室,同城视频交友,可以数万个同时在线视频演艺,聊天交友,K歌娱乐,与聊天室美女帅哥在线互动聊天,六间房聊天室给您高质量https://m.6.cn/redian/372
7.网页版聊天室视频直播视频交友美女直播美女主播网页版聊天室 网页聊天室以更便捷的方式与网友视频聊天,免去安装聊天室插件的繁琐。我秀的视频聊天室获得广大用户好评,从推出起就有了超高的人气。有同城聊天室,交友聊天室,网络K歌等各种类型的聊天室房间。旗下签约视频主播超过3万人,每天都有上万主播参与多人视频聊天交友直播,数百万人在线观看,签约歌手会拥有自己https://www.woxiu.com/redian/detail/1726.html
8.自动评论软件AI评论生成器有没有自动评论的软件_自动化评论工具的选择要点 对于需要解决访客在线沟通的商家来说,知晓有没有自动评论的软件以及如何选择合适的自动化评论工具很关键,下面来讲讲选择要点。 一、考量工具合法性 1. 市面上自动评论软件众多,但首先要确保其合法性。要选择遵循各平台规则,未被官方认定为违规刷量、恶意干扰正常秩序https://www.yunduoketang.com/study/tags-16.html
9.在线聊天室(网页版,node.js和socket.io实现)在线聊天室是一种实时通信的应用,它允许用户通过网络进行即时交流。在这个项目中,我们将探讨如何使用Node.js和Socket.IO来构建一个网页版的在线聊天室。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它让开发者可以使用JavaScript进行服务器端编程。Socket.IO则是一个库,它为实时应用提供了强大的跨平台的实时双https://download.csdn.net/download/weixin_45445291/85078796
10.网页版聊天室在线直播间推荐主播视频聊天室网页版聊天室_在线直播间 网页聊天室以更便捷的方式与网友视频聊天,免去安装聊天室插件的繁琐。秀色的视频聊天室获得广大用户好评,从推出起就有了超高的人气。有同城聊天室,交友聊天室,网络K歌等各种类型的聊天室房间。https://www.showself.com/yule/tjzb_3391.html
11.网页版在线聊天444网页版在线聊天网页版在线聊天网页版在线聊天网页版在线聊天https://www.iteye.com/resource/wzp_124-3485550
12.网页版聊天室网页版聊天室 网页聊天室以更便捷的方式与网友视频聊天,免去安装聊天室插件的繁琐。九秀美女直播的视频聊天室获得广大用户好评,从推出起就有了超高的人气。有同城聊天室,交友聊天室,网络K歌等各种类型的聊天室房间。旗下签约视频主播超过3万人,每天都有上万主播参与多人视频聊天交友直播,数百万人在线观看,签约歌手会https://www.9xiu.com/other/redian/detail/1235
13.YY客服中心YY会员YY会员|紫钻|靓号商城|OW会员/至尊vip 其他业务短位ID|网页YY|关注和粉丝邀请|YY教育|社区管理|YY充值中心|手机YY|游戏特权|YY游戏|YY号/Y群|手游【重要】谨防伪冒YY官方客服 关于近期平台防诈骗的声明 关于禁止非法交易的规定 联系客服 频道服务频道咨询 在线服务在线咨询 http://kf.yy.com/
14.H5高级网页在线聊天室源码.zip官方版下载丨最新版下载丨绿色版立即注册 源码站clcxz.cn 永久分享 举报 浏览器下载 客户端下载 保存至云盘 共1项 按名称排序 已选中1个创建时间大小状态 H5高级网页在线聊天室源码.zip 2024-03-10 21:02:50 4.82 MB 有效https://www.123pan.com/s/7zXJjv-pLP23.html
15.h5网页版聊天室仿微博微信web版聊天系统[html5仿微博、微信网页端聊天室|pc端聊天系统html5](https://www.cnblogs.com/xiaoyan2017/p/9491073.html) h5开发的仿微信、微博网页web版聊天系统,使用到了HTML5+css3+jQuery+wcpop等技术开发,弹窗插件wcPop.js进行了一次全面api升级,修复编辑器插入表情时光标定位错误bug,新增了上传附件及自定义推送内容,另外https://ask.julyedu.com/detail?id=86881
16.没有微信可以和好友聊天吗?操作步骤:1.打开“记事本”或“画图”工具;2.在“记事本”中输入文字,或在“画图”中绘制图片;3.将文字或图片保存,发送给对方即可。优点:无需下载软件,电脑自带,操作简单。缺点:功能相对简单,无法进行语音、视频聊天等。三、使用在线聊天室 在线聊天室是一种可以让用户在网上与其他人进行聊天https://zhidao.baidu.com/question/1830080303846043868.html
17.阿里巴巴网页即时聊天室社会新闻早报|网页即时聊天室 2024-11-30 05:40:24 来源: 猫眼电影 作者: 陈光力 手机查看 猫眼电影记者 陈光力 报道 “ji极管li你的he心业wu,这zhen是一ji难吃de药。wo们有hen多艰ku的工zuo要做。”墨fei表示,虽然di特律qi车制zao商需yao重新si考在zhong国的jing营方shi,但mei国电dong汽车ling导者te斯拉de情http://mall.chinahrd.net/huwei/20240730/78568.shtml?/appheji/6924153039_20240807.shtml
18.web网页版聊天室51CTO博客已为您找到关于web网页版聊天室的相关内容,包含IT学习相关文档代码介绍、相关教程视频课程,以及web网页版聊天室问答内容。更多web网页版聊天室相关解答可以来51CTO博客参与分享和学习,帮助广大IT技术人实现成长和进步。https://blog.51cto.com/topic/webwangyebanliaotianshi.html
19.在线文字聊天室网站火山引擎是字节跳动旗下的云服务平台,将字节跳动快速发展过程中积累的增长方法、技术能力和应用工具开放给外部企业,提供云基础、视频与内容分发、数智平台VeDI、人工智能、开发与运维等服务,帮助企业在数字化升级中实现持续增长。本页核心内容:在线文字聊天室网站https://www.volcengine.com/theme/1166874-Z-7-1
20.2024新版财经直播系统源码网页直播间聊天室系统源码大区直播间5.修复大厅聊天不显示头像 1.更新两个版本 版本一:推拉流方式实现在线直播,屏幕捕捉,媒体文件播放,游戏源等。 版本二:房间自定义设置外链直播源,无需推流和拉流的方式,大大节省运营成本(嵌套网页)。 2.添加手机推流,一部手机即可实现在线直播(免费) https://8wym.com/archives/11303
21.匿名聊天网页版(聊天网站有哪些)5、 EliteSingles是一个美国在线交友网站之一。网站严格审核注册用户资料,确保其真实性。 6、 3、Paltalk 7、 Paltalk是一个专有的视频群聊服务,可让用户通过视频,网络聊天和语音进行通信。Paltalk提供聊天室,用户也可以创建自己的公共虚拟聊天室。 4、eHarmony http://www.hibor.org/repinfodetail_1957527.html
22.网页版QQ在线聊天系统码农集市专业分享IT编程学习资源网页版QQ在线聊天系统天下**醉卧 上传174.97 KB 文件格式 rar 聊天室类 绝对专业的,超级酷的网页版QQ在线聊天系统,功能类似前期流行的快狗聊天系统。此类系统目前广泛的应用于人才招聘网站的人才洽谈栏目中。功能很是完善,界面全部仿照通讯QQ的界面。点赞(0) 踩踩(0) 反馈 所需:1 积分 电信网络下载 https://www.coder100.com/index/index/content/id/4804
23.实战使用Python开发一个在线聊天室腾讯云开发者社区在线聊天室在如今的互联网是一个很常见的产品,在各类电商的网页客服中,我们都可以接触到在线聊天。还有一个培训机构,你一打开他的网页,立马就弹出一个在线聊天框,防不胜防。 今天州的先生给大家带了一个后端Python+ 前端 Vue 的小项目教程。 这个教程分为上中下三篇,其中: https://cloud.tencent.com/developer/article/1875114
24.创建群聊如流9. 在线检查更新,自动帮你升级新版本 10. 新增清屏功能,快速清除窗口信息 11. 窗口增加浮层提示,操作更便捷 12. 聊天窗口增加动态标签,更多亲切话题 2009.07.30 mini网页版上线 1.显示好友列表 2.新消息和系统消息 百度Hi网页版 2009.07.08 1.增加好友动态 2.性能优化 百度Hi 2.4 Beta 2009-06-25 1. 订阅https://baike.sogou.com/v61825.htm
25.江湖聊天室网页江湖文字江湖江湖论坛江湖聊天室源于 1999 年,是全国最经典的江湖游戏。当今最具人气的江湖聊天室有阿飞江湖,世纪江湖,仙剑江湖,醉江湖,侠剑江湖等。https://www.jhxao.com/
26.客服聊天用的桌面Windows版APPProvideSupport原生桌面聊天APP可以比网页和移动APP提供更丰富的功能,它能够让很多事情进入到下一个层级。 比网页版客户端更可靠和高效 原生桌面聊天应用可以提供更高的网络连接稳定性,确保您的客服人员始终在线,以便为客户提供服务。如果失掉了连接或被中断, 我们内置的解决方案可以让聊天应用自动查找到我们服务器的最佳路径并自动重新http://www.providesupport.cn/desktop-chat-agent-app
27.有哪些免费的在线聊天室?网页聊天WYLT.COM dollarshttps://www.zhihu.com/question/37932833/answer/1512718949
28.星空体育在线网页版星空体育在线网页版标准版v11.72.6星空体育网页版登录入口,手机版、app下载、登录入口、官方网站、网页版、平台、网址、地址、注册、娱乐等高端玩法。星空体育网页版登录入口在本次联动中,游戏首次结合概念车型推出了全新载具皮肤,不仅与号称火星拓荒者的Cybertruck打造了具有科技感的皮卡载具皮肤,还与http://www.taoone.net/
29.APP聊天源码,小程序聊天源码,H5网页聊天室泡泡IM是一套完整的即时通讯软件源码,可用作手机APP聊天源码,微信聊天小程序,H5网页聊天室,社交软件源码,支持语音、视频、文字聊天。泡泡IM聊天源码常用于APP即时通讯,用户间实时沟通、在线客服系统等诸多场景。https://www.popoim.com/
30.Bootstrap聊天室模板网页源码下载Bootstrap框架聊天室模板网页源码下载,精美的聊天系统和任务管理HTML模板。Bootstrap聊天室模板网页源码下载网页模板Bootstrap聊天室模板网页源码下载源码,高质量的前端模板html5+css3,下载Bootstrap聊天室模板网页源码下载,bootstrap模板,响应式html网页模板就上bootstraphttps://www.bootstrapmb.com/tag/liaotianshi
31.在线创建多人文字聊天室Hahapo有趣网址之家在线创建多人文字聊天室-Hahapo 一个台湾的创建聊天服务,注册后,你可以建立属于自己的多人聊天室,把它嵌入到任何网页中,强悍的支持表情、贴图、分享视频等功能,如果你在N个网页上嵌入了你的聊天室,它们之间是相通的,这样,无论在哪里登陆聊天室,大家都可以一起聊了。。。https://youquhome.com/2122/
32.探索erolabs工作实验入口官网,开启你的职业发展之旅用户可以在此平台上轻松注册,浏览最新的实验室项目,提交自己的实验报告,并与团队成员进行实时沟通。这一工具极大地提高了实验工作的效率,为科研人员提供了便利。 微密猫网页版免费 微密猫网页版是一个功能强大的社交媒体工具,用户可以免费使用其丰富的功能。平台支持多种社交互动方式,如视频通话、文件共享和在线聊天室,http://www.btxzjt.com/ceping/8394.shtml