Home Web Front-end Front-end Q&A nodejs implements single chat function

nodejs implements single chat function

May 28, 2023 am 11:01 AM

Node.js implements single chat function

Node.js is a JavaScript running environment based on Chrome's V8 engine, which allows JavaScript to run on the server side. Using Node.js, we can easily build high-performance, scalable web applications.

In this article, we will use Node.js to implement a simple single chat function, that is, a real-time chat between two users.

Tools and technologies needed:

  • Node.js
  • Express Framework
  • Socket.IO
  1. Create Project

First, we need to create a new Node.js project. You can use the npm init command to initialize the project, or use any other way to create the project folder.

  1. Installing dependencies

Next, we need to install the Express and Socket.IO libraries. Open a command line in the project folder and enter the following command:

npm install express socket.io --save
Copy after login

This will install the Express and Socket.IO libraries and add them to the package.json file.

  1. Create Server

In the project folder, create a file called server.js, this is our main server file. Add the following code:

const express = require('express');
const app = express();

const server = app.listen(3000, () => {
  console.log('Server is listening on port 3000');
});
Copy after login

This will create an Express application and bind it to port 3000. Now, we can test that the server is running properly by opening a browser and visiting http://localhost:3000. If everything is fine, you should see a "Cannot GET /" message. This is because we haven't added any routes to the application.

  1. Create a chat room

Now, we need to create a chat room to implement real-time chat function between two different users. For this, we can use the Socket.IO library to handle real-time events and communication.

First, we need to add the following code to the server.js file:

const io = require('socket.io')(server);

io.on('connection', (socket) => {
  console.log('A user connected');

  socket.on('disconnect', () => {
    console.log('A user disconnected');
  });
});
Copy after login

This will create a Socket.IO instance and bind it to the existing HTTP server. When there is a new connection, the callback function will output an 'A user connected' message. When the connection is disconnected, the callback function outputs a 'A user disconnected' message.

Now we can add the ability to send and receive messages to the chat room. For this, we can use the emit() method and on() method of Socket.IO.

Add the following code in the server.js file:

io.on('connection', (socket) => {
  console.log('A user connected');

  socket.on('disconnect', () => {
    console.log('A user disconnected');
  });

  socket.on('chat message', (msg) => {
    console.log('message: ' + msg);
    io.emit('chat message', msg);
  });
});
Copy after login

This will allow users to send messages and broadcast the messages to all connected clients.

  1. Create client

Now, we need to use a simple HTML and JavaScript page to connect to the Socket.IO server and implement the function of sending and receiving messages. In the project folder, create a new file called index.html and add the following code:

<!DOCTYPE html>
<html>
<head>
  <title>Node.js Chat</title>
</head>
<body>
  <ul id="messages"></ul>
  <form id="message-form">
    <input type="text" id="input-message" autocomplete="off" />
    <button>Send</button>
  </form>
  <script src="/socket.io/socket.io.js"></script>
  <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
  <script>
    $(function () {
      const socket = io();
      $('#message-form').submit(function(e) {
        e.preventDefault(); // prevents page reloading
        const message = $('#input-message').val();
        socket.emit('chat message', message);
        $('#input-message').val('');
        return false;
      });
      socket.on('chat message', function(msg) {
        $('#messages').append($('<li>').text(msg));
      });
    });
  </script>
</body>
</html>
Copy after login

In this HTML file, we have used the jQuery library to simplify DOM manipulation. It contains an input box and a "Send" button, as well as an

    element to display all messages.

    In the JavaScript part, we used the client-side library of Socket.IO to create a Socket.IO instance connected to the server and send a message to the server after the user submits the form. When the client receives a new message from the server, it adds a new list item to the page.

    1. Start the application

    Now, we can enter the following command in the command line to launch the application:

    node server.js
    Copy after login

    Next, open the web browser and visit http://localhost:3000. You should see a simple chat interface. Open another browser window, or another browser tab on the same computer, to start chatting.

    Summary

    In this article, we built a real-time single chat application using Node.js and the Socket.IO library. This application allows users to send and receive messages and uses the Socket.IO library to handle all real-time communications. Although this application is relatively simple, it demonstrates the basic principles of how to build real-time web applications using Node.js and Socket.IO.

    The above is the detailed content of nodejs implements single chat function. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
1 months ago By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

What is useEffect? How do you use it to perform side effects? What is useEffect? How do you use it to perform side effects? Mar 19, 2025 pm 03:58 PM

The article discusses useEffect in React, a hook for managing side effects like data fetching and DOM manipulation in functional components. It explains usage, common side effects, and cleanup to prevent issues like memory leaks.

Explain the concept of lazy loading. Explain the concept of lazy loading. Mar 13, 2025 pm 07:47 PM

Lazy loading delays loading of content until needed, improving web performance and user experience by reducing initial load times and server load.

What are higher-order functions in JavaScript, and how can they be used to write more concise and reusable code? What are higher-order functions in JavaScript, and how can they be used to write more concise and reusable code? Mar 18, 2025 pm 01:44 PM

Higher-order functions in JavaScript enhance code conciseness, reusability, modularity, and performance through abstraction, common patterns, and optimization techniques.

How does currying work in JavaScript, and what are its benefits? How does currying work in JavaScript, and what are its benefits? Mar 18, 2025 pm 01:45 PM

The article discusses currying in JavaScript, a technique transforming multi-argument functions into single-argument function sequences. It explores currying's implementation, benefits like partial application, and practical uses, enhancing code read

How does the React reconciliation algorithm work? How does the React reconciliation algorithm work? Mar 18, 2025 pm 01:58 PM

The article explains React's reconciliation algorithm, which efficiently updates the DOM by comparing Virtual DOM trees. It discusses performance benefits, optimization techniques, and impacts on user experience.Character count: 159

How do you prevent default behavior in event handlers? How do you prevent default behavior in event handlers? Mar 19, 2025 pm 04:10 PM

Article discusses preventing default behavior in event handlers using preventDefault() method, its benefits like enhanced user experience, and potential issues like accessibility concerns.

What is useContext? How do you use it to share state between components? What is useContext? How do you use it to share state between components? Mar 19, 2025 pm 03:59 PM

The article explains useContext in React, which simplifies state management by avoiding prop drilling. It discusses benefits like centralized state and performance improvements through reduced re-renders.

What are the advantages and disadvantages of controlled and uncontrolled components? What are the advantages and disadvantages of controlled and uncontrolled components? Mar 19, 2025 pm 04:16 PM

The article discusses the advantages and disadvantages of controlled and uncontrolled components in React, focusing on aspects like predictability, performance, and use cases. It advises on factors to consider when choosing between them.

See all articles