> 웹 프론트엔드 > 프런트엔드 Q&A > nodejs 채팅방은 작성하기 쉽나요?

nodejs 채팅방은 작성하기 쉽나요?

WBOY
풀어 주다: 2023-05-11 19:38:05
원래의
553명이 탐색했습니다.

Node.js 채팅방: 단계별 구현

채팅방은 실시간 상호작용 및 사용자 경험 측면에서 매우 유용한 애플리케이션입니다. 최신 웹 개발 기술에서 Node.js를 사용하면 효율적인 실시간 채팅방을 신속하게 구축하고 탁월한 결과를 얻을 수 있습니다. 이 기사에서는 Node.js 채팅방의 구현을 설명하고 이것이 왜 그렇게 일반적인지, 어떻게 구축하는지 살펴보겠습니다.

서버와 클라이언트 모두 사용할 수 있는 프로그래밍 언어가 필요합니다. 이 경우 Node.js를 고려합니다. Node.js는 PHP나 Java와 같은 다른 백엔드 언어에 비해 많은 장점을 가지고 있으며, 그 중 가장 중요한 것은 이벤트 중심으로 설계되었다는 것입니다. 이를 통해 많은 수의 동시 연결을 더 효과적으로 처리하고 실시간 애플리케이션에서 데이터를 빠르게 처리할 수 있습니다.

사전 조건

Node.js 채팅방 구축의 첫 번째 단계는 Node.js와 npm(Node.js 패키지 관리자)을 설치하는 것입니다. 터미널을 열고 다음 명령을 입력합니다:

    $ sudo apt-get update
    $ sudo apt-get install nodejs
    $ sudo apt-get install npm
로그인 후 복사

npm을 사용하여 다음 3개 모듈을 설치합니다.

• 소켓.io: 웹 소켓을 더 쉽게 사용할 수 있습니다.

• 표현: 웹 애플리케이션 개발용.

• nodemon: 애플리케이션을 모니터링하고 변경 사항이 발생하면 다시 시작하는 데 사용됩니다.

다음 명령을 실행하여 설치하세요.

    $ sudo npm install socket.io express nodemon
로그인 후 복사

이제 Node.js를 사용하여 채팅방 구축을 시작할 준비가 되었습니다.

1. 웹 서버 만들기

Node.js 채팅방의 첫 번째 단계는 지정된 포트를 수신하는 웹 서버를 만드는 것입니다. 다음과 같이 할 수 있습니다.

    const app = require('express')();
    const server = require('http').Server(app);
    const io = require('socket.io')(server);

    app.get('/', (req, res) => {
        res.sendFile(__dirname + '/index.html');
    });

    server.listen(3000, () => {
        console.log('listening on *:3000');
    });
로그인 후 복사

코드는 먼저 express<를 사용합니다. /code> 모듈 HTTP 서버를 생성한 다음 <code>socket.io 모듈을 사용하여 웹 소켓 서버를 생성하고 마지막으로 서버가 포트 3000에서 수신 대기하여 브라우저에서 실행되도록 합니다. app.get() 메소드는 index.html 파일을 브라우저에 표시하는 데 사용됩니다. express模块创建一个HTTP服务器,然后使用socket.io模块创建Web套接字服务器,最后将服务器侦听端口3000以便在浏览器上运行。app.get()方法用于在浏览器中显示index.html文件。

2.在客户端上打开连接

浏览器连接到服务器上的Web套接字,经过两个步骤:

a.在HTML引用socket.io

在HTML文件中添加以下两行代码,以便能够引用socket.io-client

    <script src="/socket.io/socket.io.js"></script>
    <script src="/main.js"></script>
로그인 후 복사

b.在客户端上打开连接

打开一个WebSocket连接,以便客户端能够连接到服务器上的套接字。代码如下:

    const socket = io();
로그인 후 복사

我们将连接到Node.js服务器并返回未定型的WebSocket,这样我们就可以开始通过套接字发送和接收消息。

  1. 实现向某个房间发送消息

现在我们的服务器已经准备好接收终端之间的连接。接下来,我们将看看如何像特定房间的连接发送消息。

    socket.on('join', (room) => {
        socket.join(room);
    });

    socket.on('message', (msg, room) => {
        socket.to(room).emit('message', msg);
    });
로그인 후 복사

代码中,我们在服务器上使用套接字的.join()方法来加入指定房间。当客户端发送'join'消息时,服务器将执行此操作。然后,服务器使用.to()

2. 클라이언트에서 연결을 엽니다.

다음 두 단계를 거쳐 브라우저가 서버의 웹 소켓에 연결됩니다.
  1. a HTML에서 소켓.io를 참조합니다.
HTML에 다음 두 줄의 코드를 추가합니다. socket.io-client를 참조할 수 있는 파일:

    socket.emit('message', 'Hello World', 'room1');
로그인 후 복사

b. 클라이언트에서 연결 열기

클라이언트가 서버의 소켓에 연결할 수 있도록 WebSocket 연결을 엽니다. 코드는 다음과 같습니다.

    const users = {};

    socket.on('new-connection', () => {
        users[socket.id] = { name: `User ${Math.floor(Math.random() * 1000)}` };
        socket.broadcast.emit('user-connected', users[socket.id]);
    });

    socket.on('chat-message', (msg) => {
        socket.broadcast.emit('chat-message', { message: msg, name: users[socket.id].name });
    });

    socket.on('disconnect', () => {
        socket.broadcast.emit('user-disconnected', users[socket.id]);
        delete users[socket.id];
    });
로그인 후 복사

Node.js 서버에 연결하고 완료되지 않은 WebSocket을 반환하여 소켓을 통해 메시지를 보내고 받을 수 있습니다.

    특정 방으로 메시지 보내기 구현

    이제 우리 서버는 단말기 간 연결을 수신할 준비가 되었습니다. 다음으로 특정 방 연결에 메시지를 보내는 방법을 살펴보겠습니다.

        $ nodemon index.js
    로그인 후 복사

    코드에서는 서버에서 소켓의 .join() 메서드를 사용하여 지정된 방에 참여합니다. 서버는 클라이언트가 'join' 메시지를 보낼 때 이 작업을 수행합니다. 그런 다음 서버는 .to() 메서드를 사용하여 대상 방의 모든 사용자에게 메시지를 브로드캐스트합니다.

    🎜다음 명령을 사용하여 메시지를 보낼 수 있습니다: 🎜rrreee🎜🎜그룹 채팅🎜🎜🎜다음 단계는 서버에 그룹 채팅을 추가하는 것입니다. 이를 달성하는 방법은 다음과 같습니다. 🎜rrreee🎜 먼저 서버에 연결된 모든 사용자를 저장할 "users"라는 변수를 만듭니다. 사용자가 서버에 연결하면 그에 해당하는 개체가 "users" 변수에 저장되고 "user-connected" 메시지가 다른 모든 사용자에게 브로드캐스팅되어 새로운 사용자에게 "users" 변수가 전달됩니다. 🎜🎜사용자가 서버에 메시지를 보내면 이 메시지는 원래 보낸 사람을 포함한 다른 모든 사용자에게 브로드캐스팅됩니다. 사용자가 연결을 끊으면 "user-disconnected" 이벤트가 브로드캐스팅되고 해당 사용자가 "users" 변수에서 삭제됩니다. 🎜🎜이제 Node.js 채팅방을 배포할 준비가 되었습니다. 다음 명령을 실행하여 로컬 브라우저에서 채팅방을 볼 수 있습니다: 🎜rrreee🎜Conclusion🎜🎜이 기사에서는 Node.js와 Socket.io를 사용하여 실시간 채팅 애플리케이션을 만드는 방법을 배웠습니다. 우리는 웹 서버를 만드는 것으로 시작한 다음 클라이언트에서 연결을 열고 특정 방에 메시지를 보내는 방법을 살펴보았습니다. 서버에 접속한 모든 사용자가 서로 메시지를 보낼 수 있는 그룹 채팅 기능을 추가했습니다. 🎜🎜Node.js는 클라이언트와 서버 측 간에 실시간 웹 기능을 더 쉽게 구현할 수 있게 해주는 뛰어난 도구와 라이브러리를 제공합니다. 또한, Socket.io는 보다 쉽게 ​​처리할 수 있는 기능을 제공합니다. 이 기사가 Node.js로 채팅 애플리케이션을 만드는 데 도움이 되기를 바랍니다! 🎜

    위 내용은 nodejs 채팅방은 작성하기 쉽나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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