• Node.js的介绍与使用(附聊天案例)


    Node.js 是一个基于 Chrome V8 JavaScript 引擎的开源、跨平台运行时环境。它使开发者可以在服务器端运行 JavaScript,从而实现全栈开发,即在客户端和服务器端都使用同一种编程语言。

    主要功能和用途

    1. 服务器端开发:Node.js 主要用于构建高性能、高并发的网络服务器,如 HTTP 服务器。
    2. 实时应用:适合于开发实时交互应用,如聊天室、实时协作工具等。
    3. API 服务:常用于构建 RESTful API 服务器。
    4. 工具脚本:可以用来编写各种自动化脚本和命令行工具。

    特点

    • 异步非阻塞 I/O:Node.js 使用事件驱动、非阻塞 I/O 模型,使其在处理大量并发连接时表现优异。
    • 单线程:虽然 Node.js 是单线程的,但通过事件循环和异步操作可以有效地处理并发任务。
    • 丰富的模块:Node.js 具有庞大的包管理器 npm(Node Package Manager),提供了大量现成的模块和库。

    使用方法

    安装 Node.js

    可以从 Node.js 官方网站下载并安装适用于你操作系统的版本。

    创建一个简单的 HTTP 服务器
    1. 创建项目目录并进入该目录

      mkdir mynodeapp
      cd mynodeapp
      
    2. 初始化项目

      npm init -y
      
    3. 创建一个服务器脚本文件,例如 server.js

      // server.js
      const http = require('http');
      
      const hostname = '127.0.0.1';
      const port = 3000;
      
      const server = http.createServer((req, res) => {
        res.statusCode = 200;
        res.setHeader('Content-Type', 'text/plain');
        res.end('Hello World\n');
      });
      
      server.listen(port, hostname, () => {
        console.log(`Server running at http://${hostname}:${port}/`);
      });
      
    4. 运行服务器

      node server.js
      
    5. 访问服务器:在浏览器中访问 http://127.0.0.1:3000,你应该会看到 “Hello World” 消息。

    扩展应用

    • 使用 Express 框架:Express 是一个简洁而灵活的 Node.js Web 应用框架,提供了一系列强大的功能。

      npm install express
      

      然后可以这样使用 Express 来创建一个服务器:

      const express = require('express');
      const app = express();
      const port = 3000;
      
      app.get('/', (req, res) => {
        res.send('Hello World!');
      });
      
      app.listen(port, () => {
        console.log(`Example app listening at http://localhost:${port}`);
      });
      
    • 数据库交互:Node.js 可以与多种数据库(如 MongoDB、MySQL、PostgreSQL 等)进行交互。以下是使用 mongoose 连接 MongoDB 的示例:

      npm install mongoose
      
      const mongoose = require('mongoose');
      
      mongoose.connect('mongodb://localhost:27017/mydatabase', { useNewUrlParser: true, useUnifiedTopology: true });
      
      const db = mongoose.connection;
      db.on('error', console.error.bind(console, 'connection error:'));
      db.once('open', function() {
        console.log('Connected to the database');
      });
      

    使用示例

    好的,我们可以通过一个简单的实时聊天室示例,来展示如何使用 Node.js 和 Socket.io 实现实时交互应用。

    准备工作

    首先,确保你已经安装了 Node.js 和 npm(Node 包管理器)。

    创建项目

    1. 创建项目目录并进入该目录

      mkdir chat-app
      cd chat-app
      
    2. 初始化项目

      npm init -y
      
    3. 安装必要的包

      npm install express socket.io
      

    创建服务器

    1. 创建一个服务器脚本文件 index.js

      // index.js
      const express = require('express');
      const http = require('http');
      const socketIo = require('socket.io');
      
      const app = express();
      const server = http.createServer(app);
      const io = socketIo(server);
      
      const port = 3000;
      
      app.get('/', (req, res) => {
        res.sendFile(__dirname + '/index.html');
      });
      
      io.on('connection', (socket) => {
        console.log('a user connected');
        socket.on('disconnect', () => {
          console.log('user disconnected');
        });
      
        socket.on('chat message', (msg) => {
          io.emit('chat message', msg);
        });
      });
      
      server.listen(port, () => {
        console.log(`Server running at http://localhost:${port}/`);
      });
      

    创建客户端

    1. 创建一个 HTML 文件 index.html

      DOCTYPE html>
      <html>
      <head>
        <title>Chat Roomtitle>
        <style>
          ul { list-style-type: none; margin: 0; padding: 0; }
          li { padding: 8px; margin-bottom: 10px; background-color: #f4f4f4; }
          input { padding: 10px; width: 80%; margin-right: .5%; }
          button { padding: 10px; width: 18%; }
        style>
      head>
      <body>
        <ul id="messages">ul>
        <form id="form" action="">
          <input id="input" autocomplete="off" /><button>Sendbutton>
        form>
        <script src="/socket.io/socket.io.js">script>
        <script>
          var socket = io();
          var form = document.getElementById('form');
          var input = document.getElementById('input');
          var messages = document.getElementById('messages');
      
          form.addEventListener('submit', function(e) {
            e.preventDefault();
            if (input.value) {
              socket.emit('chat message', input.value);
              input.value = '';
            }
          });
      
          socket.on('chat message', function(msg) {
            var item = document.createElement('li');
            item.textContent = msg;
            messages.appendChild(item);
            window.scrollTo(0, document.body.scrollHeight);
          });
        script>
      body>
      html>
      

    运行应用

    1. 启动服务器

      node index.js
      
    2. 访问应用:在浏览器中打开 http://localhost:3000。你将看到一个简单的聊天界面,可以输入消息并发送。

    功能说明

    • 服务器端 (index.js)

      • 使用 express 创建 HTTP 服务器并处理静态文件请求。
      • 使用 socket.io 监听客户端连接,接收和广播聊天消息。
    • 客户端 (index.html)

      • 创建一个简单的聊天界面。
      • 使用 socket.io 与服务器通信,发送和接收消息。

    这个示例展示了如何使用 Node.js 和 Socket.io 创建一个实时聊天应用。你可以在此基础上进行扩展,添加用户管理、消息存储等功能,构建更复杂的实时应用。

    总结

    通过 Node.js,开发者可以在服务器端充分利用 JavaScript 的优势,构建出高效、可扩展的网络应用。

  • 相关阅读:
    【详细学习SpringBoot自动装配原理分析之核心流程初解析-1】
    使用DBeaver自动生成ER图
    【云原生技术】kubernates 包管理 helm
    代码随想录算法训练营第四十六天|139. 单词拆分、多重背包问题、总结
    C#中IsNullOrEmpty和IsNullOrWhiteSpace的使用方法有什么区别?
    【网络】计算机网络基础概念入门
    golang设计模式——中介模式
    RocketMQ源码(6)—Producer生产者启动源码【一万字】
    Java序列化详解(基础入门)
    spring学习第二天_Spring Ioc(1)
  • 原文地址:https://blog.csdn.net/2301_79858914/article/details/139896590