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


相关推荐

  • 苹果电脑出现 .DS_Store文件,删除不掉怎么处理?

    苹果电脑出现 .DS_Store文件,删除不掉怎么处理?

    2022年2月3日
    65
  • 网页自动化操作之-全自动下单(淘宝/天猫)

    网页自动化操作之-全自动下单(淘宝/天猫)声明:本博客所有软件不含任何恶意代码,请放心使用QQ/微信112908676最新下载地址https://webcrawl.lanzous.com/b0dvn942d密码:htig旧版2019.11.08版本2.4.3,下载地址:https://www.lanzous.com/i785doh下载结束如遇360弹出压缩包解密提醒,请直接取消忽略操作视频2019.03.07更新优酷:https://v.youku.com/v_show/id_XNDA4OTE2O.

    2022年5月20日
    36
  • Linux系统下查看版本信息

    查看Linux内核版本命令(两种方法):1、cat/proc/version显示正在运行的内核版本。[root@S-CentOS home]#cat/proc/versionLinuxversion2.6.32-431.el6.x86_64(mockbuild@c6b8.bsys.dev.centos.org)(gccversion4.4.720120313(RedHat …

    2022年4月5日
    141
  • sso单点登录系统实现原理(oauth2 单点登录原理)

    单点登录SSO(SingleSignOn)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任。单点登录在大型网站里使用得非常频繁,例如像阿里巴巴这样的网站,在网站的背后是成百上千的子系统,用户一次操作或交易可能涉及到几十个子系统的协作,如果每个子系统都需要用户认证,不仅用户会疯掉,各子系统也会为这种重复认证授权的逻辑搞疯掉。实现单点登录说到底就是要解决如何产生和存储那个信任,再就是其他系统如何验证这个信任的有效性,因

    2022年4月14日
    175
  • Mac idea2021激活码_通用破解码

    Mac idea2021激活码_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    90
  • 0xFFFFFFFF解读[通俗易懂]

    0xFFFFFFFF解读[通俗易懂]十六进制颜色AndroidAPP程序坞显示颜色值必须使用十六进制颜色,刚开始完全不知道怎么解读0xFFFFFF,百度上也没说出来个123来,最后经过查阅各种资料,解读到:0x十六进制数开头前面两个FF代表透明度后面的跟平常使用的颜色值一样例如0xFFFFFFFF等同于#FFFFFF…

    2022年5月13日
    94

发表回复

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

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