我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何利用html5的websocket实现websocket聊天室

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何利用html5的websocket实现websocket聊天室

这篇文章主要讲解了“如何利用html5的websocket实现websocket聊天室”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何利用html5的websocket实现websocket聊天室”吧!

什么是websocket

 WebSocket 协议是html5引入的一种新的协议,其目的在于实现了浏览器与服务器全双工通信。看了上面链接的同学肯定对过去怎么低效率高消耗(轮询或comet)的做此事已经有所了解了,而在websocket API,浏览器和服务器只需要要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。同时这么做有两个好处
 
1.通信传输字节减少:比起以前使用http传输数据,websocket传输的额外信息很少,据百度说只有2k
 
2.服务器可以主动向客户端推送消息,而不用客户端去查询
 
关于概念和好处,网上到处都是,不再赘述,简单看看其原理,然后动手写一个web版聊天室吧
 
握手

除了TCP连接的三次握手,websocket协议中客户端与服务器想建立连接需要一次额外的握手动作,在最新版的协议中是这个样子的
 
客户端向服务器发送请求
 

代码如下:


GET / HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Host: 127.0.0.1:8080
Origin: <a href="http://test.com">http://test.com</a>
Pragma: no-cache
Cache-Control: no-cache
Sec-WebSocket-Key: OtZtd55qBhJF2XLNDRgUMg==
Sec-WebSocket-Version: 13
Sec-WebSocket-Extensions: x-webkit-deflate-frame
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36

服务器给出响应
 

代码如下:


HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: xsOSgr30aKL2GNZKNHKmeT1qYjA=


在请求中的“Sec-WebSocket-Key”是随机的,服务器端会用这些数据来构造出一个SHA-1的信息摘要。把“Sec-WebSocket-Key”加上一个魔幻字符串“258EAFA5-E914-47DA-95CA-C5AB0DC85B11”。使用 SHA-1 加密,之后进行 BASE-64编码,将结果做为 “Sec-WebSocket-Accept” 头的值,返回给客户端(来自维基百科)。
 
websocket API

经过握手之后浏览器与服务器建立连接,两者就可以互相通信了。websocket的API真心很简单,看看W3C的定义
 

代码如下:


enum BinaryType { "blob", "arraybuffer" };
[Constructor(DOMString url, optional (DOMString or DOMString[]) protocols)]
interface WebSocket : EventTarget {
 readonly attribute DOMString url;

 // ready state
 const unsigned short CONNECTING = 0;
 const unsigned short OPEN = 1;
 const unsigned short CLOSING = 2;
 const unsigned short CLOSED = 3;
 readonly attribute unsigned short readyState;
 readonly attribute unsigned long bufferedAmount;

 // networking
          attribute EventHandler onopen;
          attribute EventHandler onerror;
          attribute EventHandler onclose;
 readonly attribute DOMString extensions;
 readonly attribute DOMString protocol;
 void close([Clamp] optional unsigned short code, optional DOMString reason);

 // messaging
          attribute EventHandler onmessage;
          attribute BinaryType binaryType;
 void send(DOMString data);
 void send(Blob data);
 void send(ArrayBuffer data);
 void send(ArrayBufferView data);
};


创建websocket
 

代码如下:


ws=new WebSocket(address); //ws://127.0.0.1:8080


 
调用其构造函数,传入地址,就可以创建一个websocket了,值得注意的是地址协议得是ws/wss
 
关闭socket

代码如下:


ws.close();


 
调用webservice实例的close()方法就可以关闭webservice,当然也可以传入一个code和string说明为什么关了
 
几个回调函数句柄
 
由于其异步执行,回调函数自然少不了,有四个重要的
 
onopen:连接创建后调用
onmessage:接收到服务器消息后调用
onerror:出错时调用
onclose:关闭连接的时候调用

看名字就知道是干什么的了,每个回调函数都会传入一个Event对象,可以通过event.data访问消息
 
使用API
 
我们可以在创建socket成功后为其回调函数赋值
 

代码如下:


ws=new WebSocket(address);
           ws.onopen=function(e){
               var msg=document.createElement('div');
               msg.style.color='#0f0';
               msg.innerHTML="Server > connection open.";
               msgContainer.appendChild(msg);
               ws.send('{<'+document.getElementById('name').value+'>}');


 也可以通过事件绑定的方式

代码如下:


ws=new WebSocket(address);
           ws.addEventListener('open',function(e){
               var msg=document.createElement('div');
               msg.style.color='#0f0';
               msg.innerHTML="Server > connection open.";
               msgContainer.appendChild(msg);
               ws.send('{<'+document.getElementById('name').value+'>}');

客户端实现
其实客户端的实现比较简单,除了websocket相关的几句就是一些自动focus、回车键事件处理、消息框自动定位到底部等简单功能,不一一说明了

感谢各位的阅读,以上就是“如何利用html5的websocket实现websocket聊天室”的内容了,经过本文的学习后,相信大家对如何利用html5的websocket实现websocket聊天室这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何利用html5的websocket实现websocket聊天室

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

PHP+Socket之如何实现websocket聊天室

这篇文章主要介绍了PHP+Socket之如何实现websocket聊天室的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇PHP+Socket之如何实现websocket聊天室文章都会有所收获,下面我们一起来看看吧
2023-07-05

golang websocket聊天室怎么实现

要实现一个golang的websocket聊天室,可以遵循以下步骤:导入所需的包:import ("fmt""log""net/http""github.com/gorilla/websocket")定义一个websocket连接的upg
golang websocket聊天室怎么实现
2024-02-29

基于websocket如何实现聊天室对话

这篇文章主要介绍了基于websocket如何实现聊天室对话,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体内容如下首先搭建一个node的环境,在app.js中写入以下代码n
2023-06-20

怎么在HTML5中使用WebSocket实现一个聊天室

本篇文章给大家分享的是有关怎么在HTML5中使用WebSocket实现一个聊天室,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1)注册注册要处理几个事情,分别是注册完成后获取当
2023-06-09

利用php和Websocket开发聊天室功能

利用PHP和Websocket开发聊天室功能引言:随着互联网的迅猛发展,聊天室已经成为人们日常交流和社交的重要手段之一。利用PHP和Websocket技术开发一个聊天室功能可以实现实时的双向通信,为用户提供更流畅便捷的聊天体验。本文将介绍如
利用php和Websocket开发聊天室功能
2023-12-09

Node.js websocket使用socket.io库实现实时聊天室

认识websocket WebSocket protocol 是HTML5一种新的协议。它实现了浏览器与服务器全双工通信(full-duple)。一开始的握手需要借助HTTP请求完成。 其实websocket 并不是很依赖Http协议,它也
2022-06-04

如何使用C#基于WebSocket实现聊天室功能

这篇文章将为大家详细讲解有关如何使用C#基于WebSocket实现聊天室功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。ServerHelper:using System;using System.Co
2023-06-29

怎么在HTML5中利用WebSocket实现点对点聊天

这期内容当中小编将会给大家带来有关怎么在HTML5中利用WebSocket实现点对点聊天,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。首先在系统启动的时候调用InitServlet方法public cla
2023-06-09

如何使用Go语言开发Websocket聊天室

如何使用Go语言开发Websocket聊天室Websocket是一种实时通信协议,通过建立一次连接,可以在服务器和客户端之间进行双向通信。在开发聊天室时,Websocket是一个非常好的选择,因为它可以实现实时消息交流,并且能够提供高效的性
如何使用Go语言开发Websocket聊天室
2023-12-14

安卓android+WebSocket实现简易QQ聊天室

本篇仅介绍实现聊天室的前端,也就是安卓端代码,后端的实现看链接说明 链接说明 1.后端使用了spring boot 框架,若不熟悉,有关spring boot 入门教程请戳此链接使用Intellij IDEA开发第一个spring boot
2022-06-06

SpringBoot整合WebSocket实现聊天室流程全解

WebSocket协议是基于TCP的一种新的网络协议。本文将通过SpringBoot集成WebSocket实现简易聊天室,对大家的学习或者工作具有一定的参考学习价值,感兴趣的可以了解一下
2023-01-04

编程热搜

目录