Maison > interface Web > js tutoriel > Comment implémenter un éditeur collaboratif en ligne à l'aide de WebSocket et JavaScript

Comment implémenter un éditeur collaboratif en ligne à l'aide de WebSocket et JavaScript

WBOY
Libérer: 2023-12-17 13:37:25
original
881 Les gens l'ont consulté

Comment implémenter un éditeur collaboratif en ligne à laide de WebSocket et JavaScript

L'éditeur collaboratif en temps réel est devenu une fonctionnalité standard du développement Web moderne, en particulier dans divers scénarios de collaboration en équipe, d'édition de documents en ligne et de gestion de tâches, la technologie de communication en temps réel basée sur WebSocket peut améliorer l'efficacité de la communication entre les membres de l'équipe. et effets collaboratifs. Cet article expliquera comment utiliser WebSocket et JavaScript pour créer un éditeur collaboratif en ligne simple afin d'aider les lecteurs à mieux comprendre les principes et l'utilisation de WebSocket.

  1. Comprenez les principes de base de WebSocket

WebSocket est une technologie de communication bidirectionnelle basée sur le protocole TCP, qui peut créer une connexion persistante entre un navigateur Web et un serveur et réaliser une transmission de messages et de données en temps réel. Par rapport au mode de réponse aux requêtes sans état du protocole HTTP traditionnel, WebSocket présente les avantages suivants :

  • Communication bidirectionnelle en temps réel entre le serveur et le client, pas besoin d'interroger ou d'actualiser la page
  • Prend en charge les messages sur un seul TCP connexion Exchange pour réduire la surcharge du réseau
  • Améliore le débit du réseau et réduit la latence, et peut transmettre efficacement des données entre les clients

Le protocole WebSocket est similaire au protocole HTTP, mais le processus de prise de contact du protocole WebSocket est un peu différent. La négociation WebSocket nécessite l'envoi d'informations d'en-tête spéciales via la requête HTTP pour indiquer la demande de connexion. Si le serveur est prêt à accepter la connexion, le code d'état 101 est renvoyé, indiquant que la connexion a été établie. Une fois le client et le serveur connectés avec succès, la connexion WebSocket restera ouverte jusqu'à ce que le client ou le serveur mette fin à la connexion.

L'API WebSocket fournit des objets WebSocket, qui peuvent être utilisés dans le code JavaScript pour créer et gérer des connexions WebSocket. Voici l'utilisation de base de WebSocket :

// 创建WebSocket对象
let socket = new WebSocket('ws://localhost:8080');

// WebSocket事件处理函数
socket.onopen = function() {
  console.log('WebSocket连接已打开');
};
socket.onmessage = function(event) {
  console.log('WebSocket收到消息:', event.data);
};
socket.onclose = function() {
  console.log('WebSocket连接已关闭');
};

// 发送消息到服务器
socket.send('Hello, WebSocket!');
Copier après la connexion
  1. Implémentation des fonctions de base d'un éditeur collaboratif en ligne

Afin d'implémenter un éditeur collaboratif en ligne, nous devons implémenter un programme simple côté serveur basé sur WebSocket pour accepter et traiter les données envoyées par le client Message texte, les résultats du traitement sont renvoyés à tous les clients en même temps. Ici, nous utilisons la bibliothèque Node.js et WebSocket pour implémenter le programme côté serveur. Tout d'abord, créez un nouveau projet Node.js en exécutant la commande suivante dans une fenêtre de terminal :

mkdir websocket-editor
cd websocket-editor
npm init -y
Copier après la connexion

Ensuite, installez la bibliothèque WebSocket à l'aide de la commande npm :

npm install ws
Copier après la connexion

Ensuite, créez un nouveau projet appelé server.js<. /code > fichier, écrivez le code suivant : <code>server.js的文件,写入以下代码:

const WebSocket = require('ws');

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

let sharedText = '';

wss.on('connection', (ws) => {
  console.log('Client connected');

  // 发送当前文本到客户端
  ws.send(sharedText);

  // 接收客户端的文本消息
  ws.on('message', (message) => {
    console.log('Received message:', message);
    sharedText = message;

    // 发送文本消息给所有客户端
    wss.clients.forEach((client) => {
      if (client.readyState === WebSocket.OPEN) {
        client.send(sharedText);
      }
    });
  });
});
Copier après la connexion

以上代码使用WebSocket库创建一个WebSocket服务器端,将监听在8080端口。当客户端连接到服务器时,服务器会发送当前的文本内容到客户端。同时,服务器也会监听客户端发送的文本消息,更新共享文本并将处理结果发送给所有客户端。

下面是客户端页面的HTML和JavaScript代码:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>WebSocket Editor</title>
  <style>
  textarea {
    width: 100%;
    height: 300px;
    font-size: 16px;
    line-height: 1.4;
  }
  </style>
</head>
<body>
  <h1>WebSocket Editor</h1>
  <textarea id="editor"></textarea>
  <script>
    const socket = new WebSocket('ws://localhost:8080');
    const editor = document.getElementById('editor');

    socket.addEventListener('open', (event) => {
      console.log('WebSocket连接已打开');
    });

    socket.addEventListener('message', (event) => {
      console.log('WebSocket收到消息:', event.data);
      editor.value = event.data;
    });

    editor.addEventListener('input', (event) => {
      const text = event.target.value;
      socket.send(text);
    });
  </script>
</body>
</html>
Copier après la connexion

以上代码创建了一个文本框和一个WebSocket对象,当用户在文本框中输入文本时,客户端会将文本消息发送到服务器,并监听收到的新文本消息,更新文本框的内容。同时客户端也会在WebSocket连接成功后,接收服务器发来的初始化文本内容。

现在可以启动服务器程序,并在浏览器中打开客户端页面。

node server.js
Copier après la connexion

打开浏览器,并访问http://localhost:8080/rrreee

Le code ci-dessus utilise la bibliothèque WebSocket pour créer un serveur WebSocket qui écoutera sur le port 8080. Lorsque le client se connecte au serveur, le serveur envoie le contenu texte actuel au client. Dans le même temps, le serveur écoutera également les messages texte envoyés par les clients, mettra à jour le texte partagé et enverra les résultats du traitement à tous les clients.
  1. Ce qui suit est le code HTML et JavaScript de la page client :
  2. rrreee
Le code ci-dessus crée une zone de texte et un objet WebSocket Lorsque l'utilisateur saisit du texte dans la zone de texte, le client enverra le message texte au serveur. et écoutez Lorsqu'un nouveau message texte est reçu, le contenu de la zone de texte est mis à jour. Dans le même temps, le client recevra également le contenu du texte d'initialisation envoyé par le serveur une fois la connexion WebSocket réussie.

Vous pouvez maintenant démarrer le programme serveur et ouvrir la page client dans le navigateur. 🎜rrreee🎜Ouvrez le navigateur et visitez http://localhost:8080/ pour voir un simple éditeur collaboratif en ligne. Lorsque deux utilisateurs ou plus visitent la page Web en même temps, lorsqu'un utilisateur saisit du texte dans l'éditeur, les autres utilisateurs peuvent voir le texte mis à jour en temps réel. Cela implémente un simple éditeur collaboratif en ligne. 🎜🎜🎜Résumé🎜🎜🎜Grâce à l'introduction de cet article, les lecteurs peuvent apprendre à utiliser WebSocket et JavaScript pour créer un simple éditeur collaboratif en ligne. WebSocket fournit un mécanisme de communication bidirectionnelle en temps réel qui peut considérablement améliorer l'effet d'interaction et l'efficacité de la collaboration des applications Web. Dans le développement actuel, WebSocket a été largement utilisé dans des domaines tels que la collaboration en ligne, l'envoi de messages en temps réel, le développement de jeux et l'Internet des objets. J'espère que cet article pourra aider les lecteurs à mieux utiliser la technologie WebSocket et JavaScript pour établir une communication en temps réel. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal