websocket实时通讯和socket.io实时通信库的使用;心跳机制与断线重连

这篇具有很好参考价值的文章主要介绍了websocket实时通讯和socket.io实时通信库的使用;心跳机制与断线重连。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

websocket

https://zh.javascript.info/websocket

WebSocket 是一种网络通信协议,就类似于 HTTP 也是一种通信协议。

为什么需要 WebSocket?

因为 HTTP 协议有一个缺陷:通信只能由客户端发起。

<script>
    // 创建ws实例,建立连接  (ws://121.40.165.18:8800  有广告)
    var ws = new WebSocket("wss://javascript.info/article/websocket/demo/hello");

    // 连接成功事件
    ws.onopen = function(evt) {
        console.log("Connection open ...");
        // 发送消息
        ws.send("Hello WebSockets!");
    };
    // 接受消息事件
    ws.onmessage = function(evt) {
        console.log("Received Message: " + evt.data);
        // 关闭连接  
        ws.close();
    };
    // 关闭连接事件
    ws.onclose = function(evt) {
        console.log("Connection closed.");
    };
</script>

代码解析:

  1. 创建WebSocket实例:通过new WebSocket()创建一个WebSocket实例。在括号中传入服务器的URL,该URL指定了WebSocket服务器的地址和端口。

  2. 连接成功事件:当WebSocket连接成功建立时,onopen事件被触发,此时会执行指定的回调函数。在这个例子中,回调函数会向服务器发送一条消息,内容为"Hello WebSockets!",通过ws.send()方法发送。

  3. 接收消息事件:当接收到服务器发送的消息时,onmessage事件被触发,执行指定的回调函数。在这个例子中,回调函数会将接收到的消息打印到控制台。

  4. 关闭连接事件:当WebSocket连接关闭时,onclose事件被触发,执行指定的回调函数。在这个例子中,回调函数会打印出"Connection closed."。

socket.io使用

socket.io 是什么?

https://socket.io/

socket.io 是一个基于 WebSocket 的 CS(客户端-服务端)的实时通信库,使用它可以在后端提供一个即时通讯服务,它提供的也有一个 JS 库,在前端可以去链接后端 socket.io 创建的服务。文章来源地址https://www.toymoban.com/news/detail-566127.html

1.装包

npm install socket.io 

2.使用

如何建立连接?
import io from 'socket.io-client'
// 参数1:不传默认是当前服务域名,开发中传入服务器地址
// 参数2:配置参数,根据需要再来介绍
const socket = io()
如何确定连接成功?
socket.on('connect', () => {
    // 建立连接成功
})
如何发送消息?
// chat message 发送消息事件,由后台约定,可变
socket.emit('chat message', '消息内容')
如何接收消息?
// chat message 接收消息事件,由后台约定,可变
socket.on('chat message', (ev) => {
    // ev 是服务器发送的消息
})
如何关闭连接?
// 离开组件需要使用
socket.close()

心跳机制与断线重连

const socketURL = 'ws://xxxx.com/' // 连接地址
let ws = null    // websocket实例
let lockReconnect = false; // websocket连接状态,避免重复连接
let reconnectTimer = 2000  // 断开后2s自动重连
 
function setWebsocket() {
  ws = new WebSocket(socketURL)
  ws.addEventListener('open', () => {
    alert('服务连接成功');
  })
  ws.addEventListener('close', () => {
    alert('服务已断开');
    reconnect()
  })
  ws.addEventListener('error', () => {
    alert('服务发生异常');
    reconnect()
  })
  ws.addEventListener('message', event => {
    alert('收到消息:', event.data)
  })
}
 
// 重连
function reconnect() {
  if (lockReconnect) return;
  lockReconnect = true;
  setTimeout(function () {
    setWebsocket();
    lockReconnect = false;
  }, reconnectTimer);
}
 
// 页面关闭断开socket连接
window.onbeforeunload = function() {
  ws.close()
  return;
}
 
// 向外暴露
export {
    ws
}

到了这里,关于websocket实时通讯和socket.io实时通信库的使用;心跳机制与断线重连的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Boot进阶(49):实时通信不再是梦想,SpringBoot+WebSocket助你轻松实现前后端即时通讯!

            在上一期,我对WebSocket进行了基础及理论知识普及学习,WebSocket是一种基于TCP协议实现的全双工通信协议,使用它可以实现实时通信,不必担心HTTP协议的短连接问题。Spring Boot作为一款微服务框架,也提供了轻量级的WebSocket集成支持,本文将介绍如何在Spring Boot项

    2024年02月11日
    浏览(41)
  • 【IPC通信--socket套接字--心跳包】

    随着网络通信技术的不断发展,网络通信已成为我们日常工作和生活中不可或缺的一部分。但是在使用网络通信的过程中,时常会遇到网络延迟、丢包等问题,这些问题不仅影响我们的工作和生活效率,也会给我们的网络带来一定的风险和安全隐患。为了解决这些问题,Soc

    2024年01月22日
    浏览(26)
  • WebSocket之socket.io的基本使用

     Socket.IO 是一个WebSocket库,可以在客户端和服务器之间实现低延迟、双向和基于事件的通信。它建立在 WebSocket 协议之上,并提供额外的保证,例如回退到 HTTP 长轮询或自动重新连接。 基本使用 安装socket.io yarn add socket.io  新建js文件与html文件内容如下 这个时候启动node后,

    2024年02月08日
    浏览(27)
  • 前端加springboot实现Web Socket连接通讯以及测试流程(包括后端实现心跳检测)

    写这个项目主要是有有个项目需要后端有数据实话返回前端,一开始采用前端轮询的方式,后面觉得及时性上有些不行,然后改为使用websocket ,具体实现demo以及测试流程发出来提供交流学习, WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket通信协议于2011年被

    2024年02月11日
    浏览(30)
  • 【WebSocket】前端使用WebSocket实时通信

    最近写项目,需要实现消息通知和实时聊天的功能,就去了解了一些关于websocket的知识,总结如下。 WebSocket 是一种在 Web 应用中实现实时通信的协议。与传统的 HTTP 请求不同,WebSocket 连接在客户端和服务器之间建立一个 持久性 的 双向通信管道 ,使得数据可以在连接打开后

    2024年02月11日
    浏览(25)
  • webSocket及使用webSocket实现实时聊天通信

    webSocket在开始的时候依旧使用的是http协议,只不过后面保持tcp持久链接,是一种全双工通信。webSockets和http很像,它的请求url用的是ws、wss,对应http、https 初始化 npm init -y 安装ws依赖 npm i --save ws 写服务器代码 服务器启动 node server.js 配置前端代码,即告诉浏览器这个请求不要

    2023年04月11日
    浏览(32)
  • nodejs实现前后端websocket通信+心跳示例

    nodejs后端代码  server.js 直接在文件所在目录打开cmd窗口,启动服务: node server.js 浏览器端  index.html 在本地直接运行浏览器即可! 如果有帮助,就点个赞再走 ^  ^                                               

    2024年02月13日
    浏览(25)
  • 【iOS】—— 实现WebSocket发送消息(SocketRocket第三方库的使用和解析)

    偶然之间了解到了利用WebSocket实现后端和前端的相互发送消息,就查了查在iOS里这个东西该怎么写,用舍友写的接口简单实现了两个用户的通信。 WebSocket 是一种在 Web 应用程序中实现双向通信的协议。它允许客户端和服务器之间建立一个持久性的连接,以便可以在任何时间点

    2024年02月15日
    浏览(43)
  • 使用 Node.js 和 Socket.io 构建实时聊天应用程序

    主要是通过简易聊天室熟练掌握 Socket.io 相关方法和运行的过程。 Socket.io 在进行实现简易实时聊天室之前,我们先梳理一下我们需要的功能和流程。 所需功能: 1、告知用户已经连接到聊天室 2、自己发送时,页面展示对应的消息展示,而对方看的到信息是谁发送了什么 3、

    2024年02月13日
    浏览(45)
  • 进度变动实时通知-使用SocketIO实现前后端的通信(基于WebSocket的实时通信库)

    最近在接触的一个项目,将PDF上传到项目里,通过调用OCR云服务把PDF里的表格数据识别出来。在此过程中,前后端需要实时通信,对识别数据进行“进度跟踪”。因此我们采用SocketIO的通讯方式,识别中前端和后端服务建立SocketIO连接,根据事件进行数据的实时更新百分比进度

    2024年02月06日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包