> 웹 프론트엔드 > JS 튜토리얼 > React와 WebSocket을 사용하여 실시간 통신 기능을 구현하는 방법

React와 WebSocket을 사용하여 실시간 통신 기능을 구현하는 방법

王林
풀어 주다: 2023-09-26 16:54:25
원래의
2038명이 탐색했습니다.

React와 WebSocket을 사용하여 실시간 통신 기능을 구현하는 방법

React와 WebSocket을 활용한 실시간 커뮤니케이션 기능 구현 방법

개요:
현대 웹 애플리케이션에서는 실시간 커뮤니케이션이 매우 중요해졌습니다. 많은 애플리케이션은 적시에 사용자에게 최신 정보를 표시하기 위해 실시간으로 데이터를 획득하고 업데이트할 수 있어야 합니다. 이번 글에서는 React와 WebSocket을 사용하여 실시간 커뮤니케이션 기능을 구현하는 방법을 소개하겠습니다. WebSocket을 사용하여 실시간 채팅 애플리케이션을 구축하는 방법을 시연하고 구체적인 코드 예제를 제공합니다.

WebSocket이란 무엇인가요?
WebSocket은 클라이언트와 서버 간의 양방향 통신을 위한 간단하고 효율적인 방법을 제공하는 최신 네트워크 통신 프로토콜입니다. WebSocket 프로토콜은 클라이언트와 서버 간의 긴 연결을 허용하고 데이터가 업데이트될 때 이러한 업데이트를 실시간으로 클라이언트에 푸시할 수 있습니다. WebSocket은 기존 HTTP 요청-응답 모델보다 더 효율적이며 실시간 애플리케이션에서 푸시 알림 및 즉각적인 통신을 가능하게 합니다.

React를 사용하여 간단한 채팅 애플리케이션 만들기:
먼저 React 애플리케이션을 만들어야 합니다. Create React App 도구를 사용하여 새로운 React 애플리케이션을 만들 수 있습니다. 터미널에서 다음 명령을 실행하여 새 React 애플리케이션을 만듭니다.

npx create-react-app realtime-chat-app
로그인 후 복사

생성되면 폴더로 이동하여 애플리케이션을 시작할 수 있습니다.

cd realtime-chat-app
npm start
로그인 후 복사

이제 기본 React 애플리케이션이 생겼습니다. 이를 기반으로 WebSocket을 추가하여 실시간 통신 기능을 구현할 예정입니다.

WebSocket 통신 기능 구현:
먼저 websocket 라이브러리를 설치해야 합니다. websocket 라이브러리를 설치하려면 터미널에서 다음 명령을 실행하세요.

npm install --save websocket
로그인 후 복사

React 구성 요소에서는 useState 후크를 사용하여 채팅 메시지 목록을 관리할 수 있습니다. 또한 useEffect 후크를 사용하여 WebSocket 연결을 초기화하고 수신된 메시지를 처리합니다. 다음은 간단한 채팅 상자 컴포넌트의 샘플 코드입니다.

import React, { useState, useEffect } from "react";
import WebSocket from "websocket";

const ChatBox = () => {
  const [messages, setMessages] = useState([]);
  const [inputValue, setInputValue] = useState("");
  let ws;

  useEffect(() => {
    ws = new WebSocket("ws://localhost:8000/ws"); // WebSocket服务器地址

    ws.onopen = () => {
      console.log("WebSocket连接已建立");
    };

    ws.onmessage = (event) => {
      const message = JSON.parse(event.data);
      setMessages((messages) => [...messages, message]);
    };

    return () => {
      ws.close();
    };
  }, []);

  const sendMessage = () => {
    ws.send(JSON.stringify({ content: inputValue }));
    setInputValue("");
  };

  return (
    <div>
      <div>
        {messages.map((message, index) => (
          <p key={index}>{message.content}</p>
        ))}
      </div>
      <input
        type="text"
        value={inputValue}
        onChange={(event) => setInputValue(event.target.value)}
      />
      <button onClick={sendMessage}>发送</button>
    </div>
  );
};

export default ChatBox;
로그인 후 복사

위 코드에서는 useState를 사용하여 채팅 메시지 목록(messages)과 입력 상자의 값(inputValue)을 관리합니다. 또한 WebSocket 연결(ws)을 선언하고 구성 요소가 로드될 때 초기화합니다. 새 메시지가 수신되면 setMessages를 사용하여 메시지 목록을 업데이트합니다. 구성 요소가 언로드되려고 하면 WebSocket 연결을 닫습니다.

렌더링 기능에서는 메시지 목록과 입력 상자를 렌더링해 보겠습니다. 사용자가 보내기 버튼을 클릭하면 입력 상자의 텍스트 내용이 WebSocket 서버로 전송됩니다.

WebSocket 서버 시작:
WebSocket 애플리케이션이 제대로 작동하려면 WebSocket 서버도 시작해야 합니다. 이 예에서는 Node.js와 ws 라이브러리를 사용하여 간단한 WebSocket 서버를 만듭니다. ws 라이브러리를 설치하려면 터미널에서 다음 명령을 실행하세요.

npm install --save ws
로그인 후 복사

그런 다음 server.js라는 파일을 만들고 다음 코드를 사용하여 WebSocket 서버를 만들 수 있습니다.

const WebSocket = require('ws');

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

wss.on('connection', (ws) => {
  ws.on('message', (message) => {
    // 处理接收到的消息
    wss.clients.forEach((client) => {
      if (client.readyState === WebSocket.OPEN) {
        client.send(message);
      }
    });
  });
});
로그인 후 복사

이제 다음을 실행하여 WebSocket을 시작할 수 있습니다. 다음 명령 서버:

node server.js
로그인 후 복사

마지막으로 App.js에 ChatBox 구성 요소를 추가하고 React 앱을 실행하기만 하면 됩니다. 입력 상자에 메시지를 입력하고 보내기 버튼을 클릭하면 해당 메시지는 WebSocket을 통해 서버로 전송되고 연결된 모든 클라이언트에게 실시간으로 반환됩니다.

요약:
이 글에서는 React와 WebSocket을 사용하여 실시간 통신 기능을 구현하는 방법을 소개했습니다. useState 및 useEffect 후크를 사용하여 React 구성 요소의 상태를 관리하고 업데이트합니다. 또한 WebSocket 연결을 생성하고 새 메시지가 수신되면 UI를 업데이트합니다. 마지막으로 메시지를 처리하고 전달하기 위한 간단한 WebSocket 서버를 만들었습니다. 이 글이 React 애플리케이션에서 실시간 통신 기능을 구현하는 방법을 이해하는 데 도움이 되었기를 바랍니다.

위 내용은 React와 WebSocket을 사용하여 실시간 통신 기능을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿