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 Room</title><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>Send</button></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 的优势,构建出高效、可扩展的网络应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/36600.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Dahlia Hart: Stylized Casual Character(休闲角色模型)

此包包含两个发型和两个服装&#xff0c;每个都有多种颜色选择。每个发型都适合与物理资源一起使用&#xff0c;并包含各种表情和音素混合形状。 下载&#xff1a;​​Unity资源商店链接资源下载链接 效果图&#xff1a;

【机器学习】大模型训练的深入探讨——Fine-tuning技术阐述与Dify平台介绍

目录 引言 Fine-tuning技术的原理阐 预训练模型 迁移学习 模型初始化 模型微调 超参数调整 任务设计 数学模型公式 Dify平台介绍 Dify部署 创建AI 接入大模型api 选择知识库 个人主页链接&#xff1a;东洛的克莱斯韦克-CSDN博客 引言 Fine-tuning技术允许用户根…

【ES】--Elasticsearch的高亮模式

目录 一、高亮策略1、Fast Vector Highlighter(快速向量高亮器)2、Posting Highlighter(帖子高亮器)3、Unified Highlighter(统一高亮器)4、Plain Highlighter(普通高亮器)5、总结二、高亮参数三、高亮案例解析1、words_one配置解析2、words_two配置解析3、words_three…

数据分析-常用模型-RFM模型

一、RFM模型的底层逻辑 漏斗模型中&#xff0c;大部分业务都是按流程推进&#xff0c;可以做漏斗分析。但是&#xff0c;大家有没有想过一个问题&#xff1a; 如果没有转化过程记录&#xff0c;该怎么办&#xff1f;如果用户行为频率很高&#xff0c;有几十个漏斗&#xff0c…

SysBench在windows下的压力测试教程(排坑,综合)

SysBench在windows下的压力测试教程 1.环境配置 官方开源 https://github.com/akopytov/sysbench 由于sysbench已经放弃了在windows上支持,所以可以构建windows下的linux系统进行测试(wsl),环境配置流程为:首先安装wsl,之后在wsl中安装sysbench,mysql,进一步在通过wsl连接主机…

使用Spring Boot构建微服务架构

使用Spring Boot构建微服务架构 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将探讨如何利用Spring Boot构建微服务架构&#xff0c;以实现高效、可扩…

[数据库]索引机制

目录 索引机制 索引的类型 索引使用 哪些适合添加索引 ​编辑 索引机制 当没有索引的时候, 如下示例,在找到id等于1的时候, 仍然会往下继续查找, 进行全表扫描, 因为它认为下面也有可能还会有1 加上索引之后进行二叉树查找, 找到1之后, 发现1的左边没有了, 右边也没有了就停…

【项目实战】Android Studio简单实现图书馆借阅管理系统

希望文章能给到你启发和灵感&#xff5e; 点赞收藏关注 支持一下吧&#xff5e; 阅读指南 序幕一、基础环境说明1.1 硬件环境1.2 软件环境 二、整体设计2.1 数据库逻辑处理&#xff1a;2.2 登录/注册模块2.3 功能界面初始化&#xff1a;2.4 图书管理模块2.5 图书租借服务2.6 读…

钡铼BL104智慧环保多个485采集转MQTT无线传输

PLC物联网关BL104是一款专为工业环境设计的先进协议转换网关&#xff0c;其集成了钡铼智能技术和环保多个485采集转MQTT无线传输功能&#xff0c;为工业控制系统提供了高效的数据采集、传输和管理解决方案。 技术规格与功能特点 PLC物联网关BL104采用钡铼智能技术&#xff0c…

一招教你用python代码给朋友写一个爱心代码

有人问我马上要跟女朋友一周年了&#xff0c;能不能用代码给他写一个爱心代码呢&#xff1f;那算你问对人了&#xff0c;来上才艺 可以使用Python的turtle模块来绘制一个爱心形状。下面是一个简单的示例代码&#xff0c;我将详细解释每一步&#xff1a; import turtle # 创建一…

回溯法基本思想-01背包、N皇后回溯法图解

基本思想&#xff1a; ​ 回溯法是一种系统地搜索问题解空间的算法&#xff0c;常用于解决组合优化和约束满足问题。其核心思想是利用深度优先搜索逐步构建可能的解&#xff0c;同时在搜索过程中进行剪枝操作&#xff0c;以排除那些无法满足问题约束或不能产生最优解的分支&am…

js修改scss变量

style.scss $color : var(--color,#ccc); // 默认值 #ccc .color{background: $color; } 定义了一个scss变量&#xff08;$color&#xff09;&#xff0c;用普通的css变量&#xff08;--color&#xff09;给他赋值&#xff0c;这里需要一个默认值&#xff0c;此时css变量(--co…

数据结构复习指南

数据结构复习指南 本文中列举了数据结构期末考试可能存在的考点 绪论 数据的基本单位 数据元素是数据的基本单位 数据项 数据项是组成数据的、有独立含义的、不可分割的最小单位。 数据对象 数据对象是性质相同的数据元素的集合&#xff0c;是数据的一个子集。 数据结…

医学预测模型web APP的制作建议

医学预测模型web APP的制作建议 医学预测模型类web APP定义为承载预测模型而便利预测模型临床应用的可视化客户端。 医学预测模型类web APP的功能是衔接预测模型和临床实践&#xff0c;让用户正确地&#xff0c;方便地使用预测模型并恰当地理解预测模型的结果&#xff0c;在此…

CMake日志与变量操作

文章目录 前言日志操作变量操作追加字符串移除示例 list的其他操作 总结 前言 CMake是一个跨平台的构建系统&#xff0c;它允许开发者编写一种独立于特定编译器的配置文件&#xff0c;然后生成适用于任何平台的本地构建环境。在这篇文章中&#xff0c;我们将探讨CMake的日志和…

如何借助ai(文心一言)获取tushare的数据

1. 准备工作 确保已安装python &#xff0c;安装Tushare库 和文心一言的地址&#xff08;文心一言&#xff09;&#xff1a; 注册Tushare账号并获取Token&#xff1a;在Tushare官方网站注册账号&#xff0c;并获取个人Token。如下 tushare地址&#xff1a;&#xff08;点击即…

【Android面试八股文】Activity如何保存状态的?

文章目录 一、你在工作中,留意过在Android中存在下列几种情况会使Activity的状态发生变化?二、Activity如何保存状态的?一、你在工作中,留意过在Android中存在下列几种情况会使Activity的状态发生变化? 在Android开发中,Activity的状态可以因为多种情况而发生变化,这些…

【高级篇】InnoDB引擎深入:核心机制与实战优化(十五)

引言 在探索了MySQL集群与分布式技术之后,我们进入了数据库引擎的核心地带——InnoDB。作为MySQL的默认存储引擎,InnoDB凭借其对事务的支持、行级锁定、高效的恢复机制以及复杂的内存管理,成为众多应用场景的首选。本章,我们将深入InnoDB的内部机制,透彻理解锁管理、事务…

微信小程序中的地图的使用

微信小程序中的地图组件 是一个用于展示地图的组件&#xff0c;提供了丰富的功能和配置选项&#xff0c;可以实现定位、标记、路线规划等多种地图相关的交互。下面是对这个组件的详细介绍&#xff0c;包括属性、事件以及示例代码。 组件属性 基础属性 longitude: 地图中心的经…

深入Ruby缓存:掌握Memcached的使用艺术

标题&#xff1a;深入Ruby缓存&#xff1a;掌握Memcached的使用艺术 摘要 在现代Web应用中&#xff0c;缓存是提高性能的关键技术之一。Memcached作为一个高性能的分布式内存缓存系统&#xff0c;与Ruby的结合使用可以显著提升应用的响应速度。本文将详细介绍在Ruby中如何集成…