从零开始搭建 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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • exec 与 exec sp_executesql 的用法及比较[通俗易懂]

    exec 与 exec sp_executesql 的用法及比较[通俗易懂]exec与exec sp_executesql 都可以用于执行动态sql。下面先介绍它们的用法,然后再对它们进行比较(下面用到的数据库表来自SQLSERVER的示例数据库AdventureWorks2008)一、exec与exec sp_executesql 用法1.动态sql(使用字符串拼接的方式)declare@FName2varchar(20)=’Ken’,  …

    2022年5月21日
  • Python之字典添加元素

    Python之字典添加元素手动推荐知识点字典创建->创建字典(7种方式)删除元素->字典删除元素(6种方式)修改元素->字典修改元素(4种方式)遍历元素->字典遍历元素(4种方式)查找元素->字典查找元素(3种方式)本文使用代码book_dict={“price”:500,”bookName”:”Python设计”,”weight”:”250g”}第一种方式:使用[]book_dict[“owner”]=”tyson”说明:中.

    2022年6月17日
  • 如何利用python读excel数据_python在excel应用实例

    如何利用python读excel数据_python在excel应用实例文章目录python读取excel表数据的方法:完整的程序代码python读取excel表数据的方法:首先安装Excel读取数据的库xlrd;然后获取Excel文件的位置并且读取进来;接着读取指定的行和列的内容,并将内容存储在列表中;最后运行程序即可。python读取excel表数据的方法:安装Excel读取数据的库—–xlrd直接pipinstallxlrd安装xlrd库#引入Excel库的xlrdimportxlrd获取Excel文件的位置并且读取进来#导入需要读取Exc

    2022年9月27日
  • 自动化测试平台(八):列表组件公共化封装和用例项目管理功能开发

    自动化测试平台(八):列表组件公共化封装和用例项目管理功能开发上一章我们完成了整个用户管理模块的功能,能够正确的增、删、改、查用户。但其中有很多判断实际上是其他类似的模块也会有的,例如:1.创建用户后回到首页刷新列表;2.删除次页最后一条数据,回到前一页刷新列表;3.查询条件的格式化;—难道我们每写一个类似的模块,都要去写一遍这些重复的逻辑代码吗?显然是没必要的,所以我们需要将其抽离成公共列表组件提供给其他模块使用,避免大量的做重复的事情,并让代码更容易维护。本章还将完成用例项目管理功能,它主要用于管理不同类型(API、UI),不同项目

    2022年6月25日
  • docker安装mysql后无法登录_docker启动不起来

    docker安装mysql后无法登录_docker启动不起来Differentlower_case_table_namessettingsforserver(‘1’)anddatadictionary(‘0’).

    2022年10月5日
  • FindWindow和FindWindowEx「建议收藏」

    FindWindow和FindWindowEx「建议收藏」函数型:HWNDFindWindow(LPCTSTRIpClassName,LPCTSTRIpWindowName);IpClassName:指向一个指定了类名的空结束字符串或一个标识类名字符串的成员的指针。如果该参数为一个成员,则它必须为前次调用theGlobaIAddAtom函数产生的全局成员。该成员为16位,必须位于lpClassName的低16位,高位必须为0。如果为NULL,

    2022年5月31日

发表回复

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

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