返回顶部
首页 > 资讯 > 前端开发 > node.js >玩转NODE.JS(四)-搭建简单的聊天室的代码
  • 330
分享到

玩转NODE.JS(四)-搭建简单的聊天室的代码

玩转聊天室代码 2022-06-04 17:06:40 330人浏览 安东尼
摘要

nodejs好久没有跟进了,最近想用它搞一个聊天室,然后便偶遇了Socket.io这个东东,说是可以用它来简单的实现实时双向的基于事件的通讯机制。我便看了一些个教程使用它来搭建一个超级简单的聊天室。 初始化

nodejs好久没有跟进了,最近想用它搞一个聊天室,然后便偶遇了Socket.io这个东东,说是可以用它来简单的实现实时双向的基于事件的通讯机制。我便看了一些个教程使用它来搭建一个超级简单的聊天室。

初始化项目

在电脑里新建一个文件夹,叫做“chatroom”,然后使用npm进行初始化:


$ npm init

然后根据提示以及相关信息一步一步输入,当然也可以一路回车下去,之后会在项目里生成一个package.JSON文件,里面的信息如下:


$ cat package.json
{
 "name": "chatroom",
 "version": "1.0.0",
 "description": "a room which lets people chat",
 "main": "index.js",
 "scripts": {
  "test": "nothing"
 },
 "author": "voidy",
 "license": "ISC",
 }

这个文件描述了项目的相关信息。

安装socket.io

接下来,安装socket.io:


 $ npm install socket.io --save

安装Socket.IO的时候,--save参数用于保存模块依赖信息到package.json文件,安装完后,打开package.json文件会看到里面多了一项内容:


 "dependencies": {
   "socket.io": "^1.2.1"
 }

同时Socket.IO安装在了node_modules文件夹下。

实现聊天-服务器端

首先我们来编写服务器端程序,新建文件“index.js”,在里面导入如下模块:


 var Http = require('http');      
 var socketio = require('socket.io'); 
 var fs = require('fs'); 

第一行是导入http模块,先前我们已经见过了,用于创建http server。

第二行是导入socket.io模块,实现实时聊天必备的,不再赘述。

第三行是导入fs模块,用于读取文件。具体的一会你就会了解到。

通过http模块创建app,在刚刚的代码中加入如下语句:


var app = http.createServer(function(req, res) {
 
  fs.readFile(__dirname + '/index.html', function (err, data) {
    if (err) {
      res.writeHead(500);
      return res.end('Error loading index.html');
    }
    res.writeHead(200); 
    res.write(data);  
    res.end();
  });
}).listen(8888);

fs.readFile()方法用于读取文件,在这里读取的是index.html文件,也就是一会即将要编写的前端聊天室的展示页面。

第8行是返回请求的状态码,第9行是返回读取到的内容给浏览器。然后这个http server使用listen方法监听8888端口。

接下来,就是使用socket.io来实现聊天的事件了。在刚刚的index.js文件的http server下面接着创建socket.io对象。


var io = socketio(app);

然后监听connection事件,当浏览器连接到此Socket.IO服务时触发该事件:


io.on('connection', function (socket) {
  // 监听浏览器端的chat事件
  socket.on('chat', function (data) {
    console.log(data);
    io.emit('sendmsg', data); 
  });
});

第4行用于将信息输入到后台的显示器,第5行用于将内容发送给客户端,为了知道服务器是否启动,我在后面又加了如下一句:


console.log("Server is running at http://localhost:8888")

至此,服务器端编码完成。

实现聊天-客户端

首先实现界面部分,仅仅有显示消息记录以及消息发送框,代码如下:


<html>
  <head>
    <meta charset="utf-8">
    <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>
    <!-- 引入socket.io库和Jquery库 -->
    <script src="https://cdn.socket.io/socket.io-1.2.1.js"></script>
    <script src="http://code.jquery.com/jquery-1.11.1.js"></script>
  </head>
  <body>
    <!-- 显示消息记录 -->
    <ul id="messages"></ul>

    <!-- 消息发送框 -->
    <div id="form">
      <input id="m" autocomplete="off" /><button id="send">Send</button>
    </div>
  </body>
</html>

然后需要在里面加上JS来实现与服务器端的通信,将服务器端获取的数据展示到客户端,主要代码如下:


<script>
// 连接到Socket.IO服务器
var socket = io.connect();

$(function() {
 // 绑定发按钮发送消息的事件
  $('#send').on('click', function() {
    var data = $('#m').val();
   // 创建chat事件并发送消息给服务器
    // emit('event') 表示发送了一个event命令
    // 使用io.on('event')接收对应事件的信息
    // 所以客户端服务器端需要使用socket.on('chat')接收聊天信息
    socket.emit('chat', { msg: data });
    $('#m').val('');
  });
});

$(function() {
  // 接收消息并显示到消息记录框中
  socket.on('sendmsg', function(msg) {
    $('#messages').append($('<li>').text(msg.msg));
  });
});
</script>

此时,可以执行:


$ node index.js

然后在浏览器打开localhost:8888查看效果。

至此,一个简陋的聊天室就实现了,有兴趣的朋友可以在此基础上进行扩展,实现功能更为复杂的聊天室。

项目源代码:源码下载

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: 玩转NODE.JS(四)-搭建简单的聊天室的代码

本文链接: https://lsjlt.com/news/12899.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 玩转NODE.JS(四)-搭建简单的聊天室的代码
    Nodejs好久没有跟进了,最近想用它搞一个聊天室,然后便偶遇了socket.io这个东东,说是可以用它来简单的实现实时双向的基于事件的通讯机制。我便看了一些个教程使用它来搭建一个超级简单的聊天室。 初始化...
    99+
    2022-06-04
    玩转 聊天室 代码
  • 怎么用AJAX实现简单的聊天室代码
    本篇内容主要讲解“怎么用AJAX实现简单的聊天室代码”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用AJAX实现简单的聊天室代码”吧! ...
    99+
    2024-04-02
  • SpringBoot+Netty实现简单聊天室的示例代码
    目录一、实现1.User类2.SocketSession类3.SessionGroup4.WebSocketTextHandler类5.WebSocketServer类6.index...
    99+
    2024-04-02
  • Node.js制作聊天室的代码怎么写
    这篇文章主要介绍了Node.js制作聊天室的代码怎么写的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Node.js制作聊天室的代码怎么写文章都会有所收获,下面我们一起来看看吧。...
    99+
    2024-04-02
  • python简单的多人聊天室
    刚开始学习python,写了一个聊天室练练手。 Server.py import socket,select,thread; host=socket.gethostname() port=5963 addr=(host,port) ...
    99+
    2023-01-31
    聊天室 简单 python
  • Android编写简单的聊天室应用
    最近写了一个简单的聊天室应用,可以发送表情,更改头像这些功能。主要技术点就是怎样把表情图片放到textview等Ui控件中展示。这里废话不多说,下面是效果图:  这...
    99+
    2022-06-06
    聊天室 Android
  • Java实现简单的聊天室功能
    本文实例为大家分享了Java实现简单聊天室功能的具体代码,供大家参考,具体内容如下 一、客户端的创建 1.我们可以用Socket来创建客户端 public class Client...
    99+
    2024-04-02
  • C语言实现简单的聊天室功能
    用C语言实现简单的聊天室功能,供大家参考,具体内容如下 服务器端 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> ...
    99+
    2024-04-02
  • Java实现NIO聊天室的示例代码(群聊+私聊)
    目录功能介绍文件UtilsFinalValueMessageNioServerNioClient功能介绍 功能:群聊+私发+上线提醒+下线提醒+查询在线用户 文件 U...
    99+
    2024-04-02
  • golang实现一个简单的websocket聊天室功能
    基本原理: 1.引入了 golang.org/x/net/websocket 包。 2.监听端口。 3.客户端连接时,发送结构体: {"type":"login","uid":"我是...
    99+
    2024-04-02
  • C++ select模型简单聊天室的实现示例
    TIPS:以下使用CMake项目进行开发。关于何为CMake,链接:https://www.jb51.net/article/247089.htm 简单聊天室效果展示 简单聊天室服...
    99+
    2024-04-02
  • 怎么用PHP实现简单的聊天室应用
    本篇内容介绍了“怎么用PHP实现简单的聊天室应用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!介绍聊天应用程序在网上非常常见。开发人员在构建...
    99+
    2023-06-17
  • c#基于WinForm的Socket实现简单的聊天室 IM
    目录1:什么是Socket2:客服端和服务端的通信简单流程3:服务端Code:4:客服端Code:5:测试效果:6:完整Code GitHUb下载路径 7:这个只是一个简单...
    99+
    2024-04-02
  • nodejs实现的一个简单聊天室功能分享
    今天我来实现一个简单的聊天室,后台用nodejs, 客户端与服务端通信用socket.io,这是一个比较成熟的websocket框架. 初始工作 1.安装express, 用这个来托管socket.io,以...
    99+
    2022-06-04
    聊天室 简单 功能
  • Qt实现网络聊天室的示例代码
    目录1. 效果演示2. 预备知识2.1 QTcpServer2.2 QTcpServer信号2.3 QTcpSocket2.4 QTcpSocket信号3. 通信流程3.1 服务器端...
    99+
    2024-04-02
  • express框架实现基于Websocket建立的简易聊天室
    最近想写点有意思的,所以整了个这个简单的不太美观的小玩意 首先你得确认你的电脑装了node,然后就可以按照步骤 搞事情了~~ 1.建立一个文件夹 2.清空当前文件夹地址栏,在文件夹地址栏中输入cmd.ex...
    99+
    2022-06-04
    简易 框架 聊天室
  • node.js 用socket实现聊天的示例代码
    本文介绍了node.js 用socket实现聊天的示例代码,分享给大家,也给自己留个笔记,具体如下: 服务器搭建 app.js const http = require("http"); const...
    99+
    2022-06-04
    示例 代码 node
  • Go语言怎么实现一个简单的并发聊天室
    今天小编给大家分享一下Go语言怎么实现一个简单的并发聊天室的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。并发聊天服务器这里主...
    99+
    2023-06-29
  • 如何利用C++实现一个简单的聊天室程序?
    如何利用C++实现一个简单的聊天室程序?在信息时代,人们越来越注重网络交流。而聊天室作为一种常见的沟通工具,具有实时性和交互性的特点,被广泛应用于各个领域。本文将介绍如何利用C++语言实现一个简单的聊天室程序。首先,我们需要建立一个基于客户...
    99+
    2023-11-04
    C++ 实现 聊天室程序
  • Go语言实现一个简单的并发聊天室的项目实战
    目录写在前面并发聊天服务器具体代码服务端客户端 总结写在前面 Go语言在很多方面天然的具备很多便捷性,譬如网络编程,并发编程。而通道则又是Go语言实现并发编程的重要工具,因...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作