WebSocket:从建立连接到关闭的完整流程

这篇具有很好参考价值的文章主要介绍了WebSocket:从建立连接到关闭的完整流程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

WebSocket(WS)是一种在客户端和服务器之间建立持久连接的通信协议。下面我将详细介绍WebSocket的开始链接到结束并彻底关闭的流程设计。

  1. 客户端发起连接请求:客户端通过创建WebSocket对象并向服务器发送连接请求。请求中包含了连接的URL和其他必要的头部信息。

  2. 服务器接受连接请求:服务器收到连接请求后,进行验证和处理。如果请求符合要求,服务器将返回一个握手响应。

  3. 客户端与服务器进行握手:客户端收到服务器的握手响应后,进行验证。如果握手成功,建立了WebSocket连接。

  4. 数据传输:一旦建立了WebSocket连接,客户端和服务器可以通过发送消息来进行双向通信。数据可以是文本或二进制数据。

  5. 服务器处理消息:服务器接收到客户端发送的消息后,可以对消息进行处理,并根据需要作出相应的响应。

  6. 客户端处理服务器响应:客户端接收到服务器的响应后,可以对响应进行处理,并根据需要作出相应的操作。

  7. 连接关闭请求:当客户端或服务器决定关闭WebSocket连接时,可以发送一个关闭请求。

  8. 连接关闭响应:接收到关闭请求后,对方会发送一个关闭响应,表示连接将要关闭。

  9. 连接关闭:在双方都发送了关闭请求并接收到关闭响应后,连接会被彻底关闭。

下面是一个简单的JavaScript代码演示WebSocket的使用:

// 客户端代码
const socket = new WebSocket('ws://example.com/socket');

// 连接建立时触发
socket.onopen = function(event) {
  console.log('WebSocket连接已建立');
  // 发送消息
  socket.send('Hello Server');
};

// 接收到消息时触发
socket.onmessage = function(event) {
  console.log('接收到服务器消息: ' + event.data);
  // 关闭连接
  socket.close();
};

// 连接关闭时触发
socket.onclose = function(event) {
  console.log('WebSocket连接已关闭');
};

// 服务器端代码(Node.js示例)
const WebSocket = require('ws');

const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', function connection(ws) {
  console.log('WebSocket连接已建立');

  // 接收到消息时触发
  ws.on('message', function incoming(message) {
    console.log('接收到客户端消息: ' + message);

    // 发送消息
    ws.send('Hello Client');
  });

  // 连接关闭时触发
  ws.on('close', function close() {
    console.log('WebSocket连接已关闭');
  });
});

上述代码展示了一个简单的WebSocket通信示例,其中包括了客户端和服务器端的代码。

非常抱歉,由于文本长度限制,我只能提供一个简要的文章设计示例。请注意,以下示例只是一个框架,您可以根据您的需要进行扩展和修改。

  • 介绍WebSocket的基本概念和用途。
  • 强调WebSocket相对于传统HTTP请求的优势,如实时双向通信和低延迟等。
  1. WebSocket连接的建立

    • 解释客户端发起连接请求的过程。
    • 详细说明服务器接受连接请求并进行握手的流程。
    • 演示通过JavaScript创建WebSocket对象的示例代码。
  2. 数据传输与消息处理

    • 解释已建立的WebSocket连接上的数据传输过程。
    • 介绍如何在客户端和服务器之间发送和接收消息。
    • 提供代码示例,展示如何处理接收到的消息。
  3. 客户端和服务器端的关闭操作

    • 解释WebSocket连接的关闭流程。
    • 描述客户端和服务器分别发起关闭请求的步骤。
    • 强调双向关闭请求的重要性,确保连接彻底关闭。
    • 提供示例代码,展示如何关闭WebSocket连接。
  4. 总结与展望

    • 总结WebSocket连接的完整流程。
    • 强调WebSocket在实时应用程序和实时通信方面的潜力。
    • 提出WebSocket在未来可能的发展方向。
      当然,我可以为您提供更丰富的代码示例来演示前端WebSocket与Node.js后台的实现。以下是一个更完整的示例:

前端代码(HTML + JavaScript):

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>WebSocket Demo</title>
</head>
<body>
  <h1>WebSocket Demo</h1>
  <input type="text" id="messageInput" placeholder="Enter message">
  <button onclick="sendMessage()">Send</button>
  <ul id="messageList"></ul>

  <script>
    const socket = new WebSocket('ws://localhost:8080');

    socket.onopen = function(event) {
      console.log('WebSocket连接已建立');
    };

    socket.onmessage = function(event) {
      const message = event.data;
      console.log('接收到服务器消息: ' + message);
      const messageList = document.getElementById('messageList');
      const li = document.createElement('li');
      li.textContent = message;
      messageList.appendChild(li);
    };

    socket.onclose = function(event) {
      console.log('WebSocket连接已关闭');
    };

    function sendMessage() {
      const input = document.getElementById('messageInput');
      const message = input.value;
      socket.send(message);
      input.value = '';
    }
  </script>
</body>
</html>

后端代码(Node.js):

const WebSocket = require('ws');

const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', function connection(ws) {
  console.log('WebSocket连接已建立');

  ws.on('message', function incoming(message) {
    console.log('接收到客户端消息: ' + message);
    ws.send('服务器收到消息: ' + message);
  });

  ws.on('close', function close() {
    console.log('WebSocket连接已关闭');
  });
});

在此示例中,前端代码使用HTML和JavaScript来创建WebSocket连接并与服务器进行通信。当用户在文本输入框中输入消息并点击发送按钮时,前端代码将通过WebSocket发送消息给后台服务器,并将收到的消息显示在页面上。

后端代码使用Node.js和WebSocket模块创建了一个WebSocket服务器。当客户端与服务器建立连接时,服务器会在控制台输出连接已建立的消息。服务器会监听客户端发送的消息,并将收到的消息作为响应发送回客户端。当连接关闭时,服务器会在控制台输出连接已关闭的消息。

请确保在运行示例代码之前安装了Node.js和WebSocket模块(使用npm install ws命令安装)。

这个更丰富的代码示例演示了一个简单的聊天应用程序,可以通过WebSocket实现实时通信。您可以根据需要对其进行修改和扩展,添加更多功能和业务逻辑。文章来源地址https://www.toymoban.com/news/detail-497995.html

到了这里,关于WebSocket:从建立连接到关闭的完整流程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • vue 建立websocket连接

    需求:管理后台需要服务器建立长连接,发送远程手机端的截图,以此实现远程手机屏幕共享的功能 websocket.js 页面 在vue 添加方法  后端 使用的java进行处理 实现的效果    点击关闭按钮时 断开连接      

    2024年02月11日
    浏览(43)
  • jQuery建立WebSocket连接

    jQuery建立WebSocket连接,向服务端发送数据,实现WebSocket连接成功。 js代码如下: 向服务端发送消息,服务端返回数据,接收数据。  

    2024年02月17日
    浏览(38)
  • 正确主动关闭websocket,异常关闭处理

    下面是一个示例的WebSocket错误码表格,包括错误码、错误处理方法和错误码说明: 错误码 错误如何处理 错误码说明 1000 关闭连接 正常关闭连接 1001 关闭连接后几秒后重连 终端离开或刷新页面 1002 关闭连接上报日志给开发者 协议错误 1003 关闭连接上报日志给开发者 数据类型

    2024年01月16日
    浏览(29)
  • SSH密钥认证登陆流程(Vscode连接到远程)

    SSH(Secure Shell)是一种用于远程登录和安全传输数据的网络协议。它提供了两种主要的远程连接方式: 密码认证 :使用用户名和密码进行身份验证。在这种方式下,用户需要提供正确的用户名和密码才能成功连接到远程主机。这是最常见的认证方式,但安全性较低,因为密

    2024年02月19日
    浏览(40)
  • [WARNING]: 连接到反向WebSocket Universal服务器 ws://127.0.0.1:8080/cqhttp/ws/ 时出现错误: websocket: bad handsh

    这种问题一般有两种情况 这个问题暂时较为常见,因为nonebot2发布新版本(beta1)后,ws地址发生了改变,具体如下: 报错: [WARNING]: 连接到反向WebSocket Universal服务器 ws://127.0.0.1:这里是端口号/cqhttp/ws/ 时出现错误: websocket: bad handshake 只需将配置文件中的旧版替换为新版即可

    2024年02月11日
    浏览(40)
  • WebSocket建立连接传参常用方式

    近期在做一个物联网项目,需要实现页面的实时更新,这里考虑到用websocket来实现,对于让项目支持websocket这个在springboot中基于spring-boot-starter-websocket来构建是一件很简单的事情,本文就不赘述了。本文主要就建立websocket时如何传参进行说明 当我们的一个web站点,既有普通的

    2024年02月13日
    浏览(37)
  • 前端使用websocket发送消息,建立连接(详细)。【前端】

    序言 今天来学习一下前端如何使用websocket发送消息 1.1 什么是WebSocket WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,它可以让客户端和服务器之间进行实时的双向通信。与传统的 HTTP 请求不同,WebSocket 使用了一个长连接,在客户端和服务器之间保持持久的连接,从

    2024年02月04日
    浏览(43)
  • vue-页面使用websocket建立连接用于测试

    前言 websocket双向通讯在项目中经常使用,但一般都是封装成第三方包,登录,退出建立连接。 这样使用是合理,但不便于测试,其实在.vue页面通过new方式可以直接使用websocket。 在页面实例加载完成之后连接websocket,在组件销毁时候断开websocket连接。 注意具体情况要跟后端

    2024年02月15日
    浏览(40)
  • postman连接websocket, 建立连接、聊天测试(v8.5.1)

    ⬆️ 是发送的信息,     ⬇️ 是接收到的信息

    2024年02月06日
    浏览(35)
  • springboot websocket 配置超时关闭连接

    客户端与服务器在用websocket通信的时候,如果客户端突然关闭网络或者直接关机,此时路由与服务器之间的链接还存在 若不给该客户端发信息,除非路由器重启,否则这个链接会一直存在,服务器会一直认为该链接存在,后果就是随着大连无用的tcp连接积累,服务器会报so

    2024年02月11日
    浏览(50)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包