Node.js实现简单聊天服务器

yizhihongxing

我来详细讲解一下“Node.js实现简单聊天服务器”的完整攻略。

1. 安装Node.js

首先需要安装Node.js,可以去官网下载安装包安装,或者使用命令行工具,在命令行中输入以下命令:

$ sudo apt-get update
$ sudo apt-get install nodejs

安装完成后,可以通过在命令行中输入以下命令来检验是否安装成功:

$ node -v

2. 初始化项目

初始化一个项目,可以使用npm,命令如下:

$ npm init

按照提示一步步输入参数,等待初始化完成即可。

3. 安装Socket.io

安装Socket.io,命令如下:

$ npm install socket.io --save

安装完成后,可以在项目中使用Socket.io。

4. 编写代码

下面是一个简单的Socket.io聊天室例子:

//导入服务端socket.io
var io = require('socket.io')(server);

//服务端socket监听客户端socket的连接
io.on('connection', function (socket) {
  console.log('a user connected');

  //监听客户端socket发送的chat message事件
  socket.on('chat message', function(msg){
    console.log('message: ' + msg);

    //使用io向所有客户端socket广播chat message事件
    io.emit('chat message', msg);
  });

  //监听客户端socket的disconnect事件
  socket.on('disconnect', function(){
    console.log('user disconnected');
  });
});

5. 运行项目

在终端中运行以下命令启动socket服务器:

$ node app.js

打开浏览器,访问http://localhost:3000即可看到一个简单的聊天室页面,可以在输入框中发送消息,所有的连接到服务器的客户端都可以看到这个消息。

6. 示例

下面是一个简单的使用Socket.io实现简单聊天服务器的例子,客户端代码如下:

<!doctype html>
<html>
  <head>
    <title>Socket.IO chat</title>
    <style>
      * { margin: 0; padding: 0; box-sizing: border-box; }
      body { font: 13px Helvetica, Arial; }
      form { background: #000; padding: 3px; position: fixed; bottom: 0; width: 100%; }
      form input { border: 0; padding: 10px; width: 90%; margin-right: .5%; }
      form button { width: 9%; background: rgb(130, 224, 255); border: none; padding: 10px; }
      #messages { list-style-type: none; margin: 0; padding: 0; }
      #messages li { padding: 5px 10px; }
      #messages li:nth-child(odd) { background: #eee; }
    </style>
  </head>
  <body>
    <ul id="messages"></ul>
    <form id="chat-form">
      <input id="m" autocomplete="off" /><button>Send</button>
    </form>

    <script src="/socket.io/socket.io.js"></script>
    <script src="https://code.jquery.com/jquery-1.11.1.js"></script>
    <script>
      $(function () {
        var socket = io();

        //监听服务端socket发送的chat message事件
        socket.on('chat message', function(msg){
          $('#messages').append($('<li>').text(msg));
        });

        //监听表单提交事件
        $('form').submit(function(e){
          e.preventDefault();
          socket.emit('chat message', $('#m').val());
          $('#m').val('');
          return false;
        });
      });
    </script>
  </body>
</html>

服务端代码如下:

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

//指定静态资源目录
app.use(require('express').static('public'));

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

//服务端socket监听客户端socket的连接
io.on('connection', function(socket){
  console.log('a user connected');

  //监听客户端socket发送的chat message事件
  socket.on('chat message', function(msg){
    console.log('message: ' + msg);

    //使用io向所有客户端socket广播chat message事件
    io.emit('chat message', msg);
  });

  //监听客户端socket的disconnect事件
  socket.on('disconnect', function(){
    console.log('user disconnected');
  });
});

http.listen(3000, function(){
  console.log('listening on *:3000');
});

启动服务器,访问http://localhost:3000即可看到一个简单的聊天室页面,可以在输入框中发送消息,所有连接到服务器的客户端都可以看到这个消息。

希望我的回答能够帮到你,如有不明白的地方请随时问我。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Node.js实现简单聊天服务器 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • 记一次webapck4 配置文件无效的解决历程

    关于“记一次webapck4 配置文件无效的解决历程”的解决历程攻略,我会在下文中详细阐述方案和问题原因,并给出两个示例说明。 问题描述 最近在使用webpack4打包Vue项目时,我修改了webpack.config.js配置文件,并执行npm run build打包命令,但是发现修改的配置并没有生效,还停留在默认配置的状态。 解决方案 经过对问题的排查,…

    node js 2023年6月8日
    00
  • vue项目环境变量配置的实现方法

    请允许我详细介绍“Vue 项目环境变量配置的实现方法”。 什么是环境变量? 环境变量是操作系统在程序调用时将信息传递给程序的一种机制。它可以在程序中设置各种参数、路径、库等信息,使程序在不同的环境中运行时实现不同的功能。 Vue 项目环境变量配置的实现方法 Vue 项目环境变量配置的实现方法有多种,其中比较常见的是通过 .env 系列文件配置。 在 Vue …

    node js 2023年6月9日
    00
  • 详解JWT与Token的应用与原理

    详解JWT与Token的应用与原理 什么是JWT JWT(JSON Web Token)是一种用于网络通信的协议,主要用来在网络应用之间传递认证及授权数据。JWT 将用户信息进行编码,形成一个字符串并将其发送到客户端,在客户端需要访问受保护的资源时,将其发送回服务器进行验证。JWT 是有状态的,因为其中包含了用户的信息,而服务器在解析 Token 时,会将其…

    node js 2023年6月8日
    00
  • Node 升级到最新稳定版的方法分享

    Node 升级到最新稳定版的方法分享 在使用 Node 进行开发时,时常需要升级 Node 版本以获取更好的性能和更多的功能。本文将分享如何升级 Node 到最新稳定版的方法,以及两个实例说明。 方法一:使用 Node Version Manager (NVM) Node Version Manager(NVM)是一个非常流行的 Node 版本管理工具,可以…

    node js 2023年6月8日
    00
  • Node中的streams流的具体使用

    使用 Node.js 的 streams(流)是一种有效处理数据的方式。它们基于 EventEmitter API,因此可以轻松实现任意类型的自定义流和链式流水线。 1. 什么是流? 流是 Node.js 提供的处理流式数据的抽象接口。它们可以用于读取文件,处理 HTTP 请求,压缩和解压缩数据,以及许多其他用途。 流是可读的、可写的或可读可写的。数据能够按…

    node js 2023年6月8日
    00
  • node-sass一直安装不上、安装失败的原因分析

    下面是解决 “node-sass一直安装不上、安装失败” 的完整攻略: 原因分析 “node-sass” 失败的原因可能有以下几种: 网络不通畅,无法从npm源或Github上下载相关代码。 「node-gyp」编译环境错误,根据node-sass的依赖文件node-gyp的版本来安装或重新安装node-gyp。 「Python环境」未安装或未配置正确,根据…

    node js 2023年6月8日
    00
  • 解决Vue-cli无法编译es6的问题

    针对”解决Vue-cli无法编译es6的问题”,我们可以分成以下几个步骤来解决: 步骤一:了解babel和babel-loader babel babel是一个JavaScript编译器,能够将ES6或更新版本的js编译成ES5(向下兼容)的语法。但是它只是一个库,必须要配合其他工具或者框架使用,如babel-loader。 babel-loader bab…

    node js 2023年6月8日
    00
  • 纯JS 绘制数学函数

    下面就让我来为您详细讲解“纯JS 绘制数学函数”的完整攻略。 什么是纯JS 绘制数学函数? 纯JS 绘制数学函数是一种使用 JavaScript 语言编写程序,通过绘制图形的方式来展示数学函数的方法。使用此方法,可以实现用代码来绘制各种不同的数学函数图形,而无需借助于任何第三方库和工具。 绘制数学函数的基本原理 首先需要明确的是,绘制数学函数的本质就是将数学…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部