NodeJS简单实现WebSocket功能示例

接下来我详细讲解“NodeJS简单实现WebSocket功能示例”的完整攻略。

WebSocket简介

WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。WebSocket 从开始握手时就与 HTTP 具有相似之处,因此能够通过现有的 HTTP 端口(80 和 443)进行通信,避免了被防火墙过滤的风险。WebSocket 网络通信协议可以在不提供 HTTP 帮助的情况下,实现客户端和服务器之间的实时双向数据传输。

基础知识

  • WebSocket 握手过程服从 HTTP 协议;

  • WebSocket 彼此之间是平等的双向通信,可以发送消息到任何一方,可以是客户端也可以是服务端;

  • WebSocket 有着一套自己的协议和标准;

  • WebSocket 是基于 TCP 的,相比于 HTTP 更加适合在高并发下使用。

示例一

下面,我们通过一个简单的 WebSocket 实例来了解实现 WebSocket 的过程。

实现步骤

  1. 安装 ws 模块,可以通过以下命令安装:
npm install ws --save
  1. 编写服务器代码。在服务器代码中,我们需要创建一个 WebSocket 服务器,并监听绑定的端口。
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });
wss.on('connection', function connection(ws) {
  ws.on('message', function incoming(message) {
    console.log('received: %s', message);
  });
  ws.send('something');
});
  1. 启动服务器,在命令行中执行以下命令:
node server.js
  1. 客户端代码实现。下面是一个简单的 JavaScript 代码,实现了连接到服务器上,并发送一条消息的功能。
const WebSocket = require('ws');
const ws = new WebSocket('ws://localhost:8080');
ws.on('open', function open() {
  ws.send('hello server');
});
ws.on('message', function incoming(data) {
  console.log(data);
});

实例效果

在控制台中可以看到如下输出:

received: hello server

示例二

下面,我们用 Express 搭建一个服务器,实现 WebSocket 交互。

实现步骤

  1. 安装 expressws 模块,可以通过以下命令安装:
npm install express ws --save
  1. 编写服务器代码。使用 Express 搭建一个服务器,监听 3000 端口,并开启 WebSocket 功能。
const express = require('express');
const app = express();
const server = require('http').createServer(app);
const WebSocket = require('ws');
const wss = new WebSocket.Server({ server });
wss.on('connection', function connection(ws) {
  console.log('client connected');
  ws.on('message', function incoming(message) {
    console.log('received: %s', message);
    ws.send(`message: ${message}`);
  });
  ws.on('close', function () {
    console.log('client disconnected');
  });
});
server.listen(3000, function () {
  console.log('server started on port 3000');
});
  1. 启动服务器,在命令行中执行以下命令:
node server.js
  1. 客户端代码实现。下面是一个简单的 JavaScript 代码,实现了连接到服务器上,并发送一条消息的功能。
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <title>WebSocket Test</title>
  </head>
  <body>
    <form>
      <input id="message" type="text" placeholder="Enter message" autofocus>
      <button id="send">Send</button>
    </form>

    <script>
      const socket = new WebSocket('ws://localhost:3000');
      socket.onopen = function (event) {
        console.log('WebSocket connected', event);
      };
      socket.onmessage = function (event) {
        console.log('WebSocket message received', event.data);
      };
      socket.onclose = function (event) {
        console.error('WebSocket closed', event);
      };
      document.getElementById('send').addEventListener('click', function (event) {
        event.preventDefault();
        const message = document.getElementById('message').value;
        console.log('send message', message);
        socket.send(message);
      });
    </script>
  </body>
</html>

实例效果

打开浏览器访问 http://localhost:3000,在输入框中输入消息并点击“Send”按钮,可以在控制台中看到如下输出:

WebSocket connected Event {isTrusted: true, type: "open", target: WebSocket, currentTarget: WebSocket, eventPhase: 2, …}
send message hello world
WebSocket message received message: hello world

至此,NodeJS 的 WebSocket 功能已经实现。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:NodeJS简单实现WebSocket功能示例 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • 基于node的cli工具开发使用详解

    基于node的cli工具开发使用详解 什么是CLI工具 CLI指的是命令行界面,是与计算机进行交互的一种方式。CLI工具通常是指在命令行界面下运行的程序,可以执行一些简单的任务,比如新建文件夹、复制文件等等。CLI工具具有操作简便、灵活高效等特点,可以方便程序员进行开发工作。 CLI工具的开发流程 CLI工具的开发需要以下步骤: 安装nodejs环境和npm…

    node js 2023年6月8日
    00
  • 详解Node全局变量global模块

    下面针对Node全局变量global模块做一份详细的攻略,内容如下: 什么是global模块 在Node中,global是全局变量的容器,也就是说在Node中所有的变量、函数、对象都是global的属性,因此global是Node中的全局命名空间。 如何使用global模块 我们可以使用全局变量global来声明全局变量,如下面的示例: // 全局属性gre…

    node js 2023年6月8日
    00
  • 如何解决sass-loader和node-sass版本冲突的问题

    要解决 sass-loader 和 node-sass 版本冲突的问题,需要进行以下步骤: 确认项目中的依赖 首先要确定项目中已经安装的 sass-loader 和 node-sass 版本。可以通过运行下面的命令来查看当前项目中安装的版本号: npm ls sass-loader node-sass 该命令将会输出当前项目中 sass-loader 和 n…

    node js 2023年6月8日
    00
  • 利用forever和pm2部署node.js项目过程

    下面是详细的“利用forever和pm2部署node.js项目过程”的攻略。 概述 在使用Node.js开发Web项目时,我们需要将我们的Node.js应用程序部署到服务器上,然后运行该程序。常用的Node.js应用程序部署工具有forever和pm2。 无论你选择哪个工具,它们都能够确保你的Node.js应用程序在服务器上长时间稳定的运行。同时,它们还可以…

    node js 2023年6月8日
    00
  • nodejs开发环境配置与使用

    Node.js开发环境配置与使用攻略 Node.js是一种基于V8引擎的JavaScript运行环境,可以帮助我们在服务器端运行JavaScript代码。在开发Node.js应用程序前,我们需要对开发环境进行配置,本文将为你介绍如何在不同平台上设置Node.js开发环境。 一、Windows平台上配置 以下是在Windows平台上配置Node.js开发环境的…

    node js 2023年6月8日
    00
  • nodejs开发一个最简单的web服务器实例讲解

    下面是详细讲解“nodejs开发一个最简单的web服务器实例讲解”的完整攻略。 什么是Node.js Node.js是一种基于Chrome V8引擎的开源平台,用于轻松构建快速、可扩展的网络应用程序。它是一个可以在服务器端运行JavaScript代码的运行时环境。 开发一个最简单的web服务器实例 在Node.js中,使用http模块就可以轻松地创建一个最简…

    node js 2023年6月8日
    00
  • Ajax获取node服务器数据的完整步骤

    Ajax是一种在Web应用程序中使用的常用技术,可实现无需重新加载整个页面即可更新部分页面内容。本篇攻略将详细介绍如何使用Ajax从Node服务器中获取数据的完整步骤。 步骤一:创建Node服务器 首先需要创建一个Node服务器,提供数据的访问接口。可以使用Express框架来快速搭建这个服务器。下面是一个简单的示例代码: const express = r…

    node js 2023年6月8日
    00
  • nodejs下打包模块archiver详解

    Node.js 下打包模块 archiver 详解 简介 archiver 是一个基于 Node.js 的打包压缩模块,可以用于创建 zip、tar 等格式的文件。它内部是使用 Node.js 的 stream 实现的,可以流式地处理大规模的文件。 安装 可以使用 npm 在项目中安装 archiver 模块: npm install archiver 使用…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部