从零开始搭建 web 聊天室(一)

从零开始搭建 web 聊天室(一)本篇将介绍如何快速、简便地使用socket.io库搭建一个web在线聊天室。前端并没有使用任何框架。后端使用express框架搭建简易的后端。socket.io库本质上是基于websocket上进行封装。改变了以往只能前端发送请求,后端才能返回给前端信息,这样的一问一答形式。实现了前后端双向通信,即后端也可以主动push信息到前端。websocket尤其适用于在线聊天或者实时交互的场景。已经广泛用于直播平台、视频平台等。本篇实现:最基本的前后端信息交互。代码地址:https

大家好,又见面了,我是你们的朋友全栈君。

本篇将介绍如何快速、简便地使用 socket.io 库搭建一个 web 在线聊天室。前端并没有使用任何框架。后端使用 express 框架搭建简易的后端。

socket.io 库本质上是基于 websocket 上进行封装。改变了以往只能前端发送请求,后端才能返回给前端信息,这样的一问一答形式。实现了前后端双向通信,即后端也可以主动 push 信息到前端。websocket 尤其适用于在线聊天或者实时交互的场景。已经广泛用于直播平台、视频平台等。

本篇实现:

最基本的前后端信息交互。

代码地址:

https://github.com/billmian/socketio-chat

技术栈:

  • 前端 html + socketio
  • 后端 express 框架

首先先创建 index.html 和 index.js 两个文件

index.html 文件

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body></body>
  <script src="/socket.io/socket.io.js"></script>
  <script>
    var socket = io();
    socket.emit("newChatMessage", "这是传送给后端的消息");

    socket.on("broadCastMessage", (msg) => { 
   
      console.log("这里输出后端返回的消息", msg);
      renderContent(msg);
    });
  </script>
</html>

index.js 文件中:
先使用 npm 安装库 socket.io express

npm install socket.io  express --save
var express = require("express");
var app = express();
var http = require("http").createServer(app);

var io = require("socket.io")(http);
app.get("/", (req, res) => { 
   
  res.sendFile(__dirname + "/index.html");
});

io.on("connection", (socket) => { 
   
  socket.on("newChatMessage", (msg) => { 
   
    console.log("message: " + msg);
    io.emit("broadCastMessage", "后端传过来的消息");
  });
});
http.listen(3000, () => { 
   
  console.log("listening on *:3000");
});

然后在文件目录下运行

node index.js

然后在浏览器中打开 http://localhost:3000
然后使用 F12 打开控制台可以看到

在这里插入图片描述
前端已经输出了后端传过来的消息

再回到运行 nodejs 的终端
在这里插入图片描述
可以看到后端也接受到了前端传来的消息。

至此我们实现了使用 socketio 进行了前后端的 websocket 的交互。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/152202.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm单行和多行注释快捷键_c语言基本函数及解释

    pycharm单行和多行注释快捷键_c语言基本函数及解释对所编写的函数****快速进行多行注释**:**重点——小灯泡定义一个函数如下,款素插入多行注释,效果如下:deffunc1(char,time):”””打印多行分割线:paramchar:分割线使用的分割字符:paramtime:分割线重复次数”””print(char*time)func1(“o”,)其中注释段插入步骤:在定义函数头后deffunc1(char,time):光标放到函数名上,等小灯泡出现,点

    2022年8月27日
    9
  • Spring Batch 之 Hello World教程

    Spring Batch 之 Hello World教程SpringBatch之HelloWorld教程本文我们基于springboot和springbatch实现一个简单helloworld入门批处理程序。如果你刚刚接触springbatch,这篇教程会让你花最短时间理解springbatch框架。SpringBatch框架介绍开始代码之前,我们先了解框架中的核心组件,见下图:批处理过程有Job组成,job是封装整…

    2022年5月27日
    32
  • sublime3激活码-激活码分享

    (sublime3激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~ML…

    2022年3月21日
    43
  • linux怎么安装xshell_shell连接db2数据库命令

    linux怎么安装xshell_shell连接db2数据库命令第一步:在linux下解压文件第二步:安装之前先执行卸载掉centos7自带的mariadb-lib(1)查询mariadb信息rpm-qa|grepmariadb2)使用rpe-e命令卸载rpm-emariadb-libs-5.5.64-1.el7.x86_64–nodeps第三步:依次安装yuminstallmysql-community-common-5.7.27-1.e…

    2025年10月15日
    3
  • TRILL

    TRILLTRILL  TRILL(TransparentInterconnectionofLotsofLinks)多链接半透明互联(TRILL)  在交换方面,IETF正在致力于多链接半透明互联(TRILL)标准的研究。IETF打算用该标准克服生成树协议(STP)在规模上和拓扑重聚方面存在的不足。在路由方面,IETF正在致力于制订位置标识与身…

    2025年8月23日
    8
  • OpenHarmonyOS for Hi3516dv300[通俗易懂]

    OpenHarmonyOS for Hi3516dv300[通俗易懂]OpenHarmonyOSforHi3516dv300一、安装dockermkdiropenHarmonycdopenHarmonysudosnapinstalldocker#获取docker镜像sudodockerpullswr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker-standard:0.0.1#运行镜像sudodockerrun-it-v$(pwd):/h

    2025年12月3日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号