Socket.IO使用方法

前言

Socket.IO是一个库,基于 Node.js 的实时应用程序框架。可以在浏览器和服务器之间实现实时,双向和基于事件的通信。它适用于每个平台、浏览器或设备,同样注重可靠性和速度。它包括:

  • Node.js 服务器
  • 浏览器的Javascript客户端库(也可以从Node.js运行)

WebSocket 的产生源于 Web 开发中日益增长的实时通信需求,对比基于 http 的轮询方式,它大大节省了网络带宽,同时也降低了服务器的性能消耗。

WebSocket 协议在2008年诞生,2011年成为国际标准。虽然主流浏览器都已经支持,但仍然可能有不兼容的情况,为了兼容所有浏览器,就诞生SocketIO。

SocketIO将WebSocket、AJAX和其它的通信方式全部封装成了统一的通信接口,也就是说,我们在使用SocketIO时,不用担心兼容问题,底层会自动选用最佳的通信方式。
SocketIO使用手册https://socket.io/docs/v4/handling-cors/

一、安装Socket.IO

npm init -y
npm install socket.io

二、使用场景

两个客户端互相通信

2.1、模拟服务端

const { createServer } = require("http");
const { Server } = require("socket.io");

const httpServer = createServer();
const io = new Server(httpServer, {  
    cors: {                 //解决跨域问题
        origin: "*",
        methods: ["GET", "POST"]
  } 
});

io.on("connection", (socket) => {
    // 自定义接收消息事件
  socket.on('sendMsg',(data) => {
      console.log(data)
    //   定义发送消息事件
    // io表示广播出去,发送给全部的连接
      io.emit('pushMsg',"服务端返回的消息:"+data)
  })
});

httpServer.listen(3000,function(){
    console.log('http://127.0.0.1:3000')
});

2.1、模拟客户端

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- socketio提供的客户端 -->
    <script 
        src="https://cdn.socket.io/4.4.0/socket.io.min.js" 
        integrity="sha384-1fOn6VtTq3PWwfsOrk45LnYcGosJwzMHv+Xh/Jx5303FVOXzEnw0EpLv30mtjmlj"
        crossorigin="anonymous">
    </script>
</head>
<body>
    <input type="text" id="text">
    <input type="button" value="发送" onclick="send()">

    <script>
        // 直接建立连接
      var socket = io.connect('http://127.0.0.1:3000')
      function send(){
          var text = document.getElementById('text').value
        //   发送消息
          socket.emit('sendMsg',text)
      }

    //   接收服务端的消息
    socket.on('pushMsg',(data) => {
        console.log(data)
    })


    </script>
</body>
</html>

2.3、测试

在这里插入图片描述

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
引用中提到了socket.io是一个库,用于实时通信,可以在前端和后端之间建立连接,并获取实时状态和下指令。在前端使用socket.io时,需要引入socket.io-client库,并通过io.connect方法建立与服务端的连接。例如,在前端中可以使用以下代码建立连接: import { io } from "socket.io-client"; let socket = io.connect("http://localhost:3000/"); 其中,http://localhost:3000/是服务端的地址。连接成功后,可以监听各个事件的使用。例如,通过socket.on方法监听"connect"事件,判断连接是否成功;使用socket.on方法监听"disconnect"事件,捕获连接异常中断;还可以监听其他自定义事件,例如"message_event"事件,用于接收后台发送的消息。 需要注意的是,通过socket.close()或socket.disconnect()方法可以在前端主动断开与服务端的连接。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [实时通信Socket.io使用](https://blog.csdn.net/weixin_44690156/article/details/127684237)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Socket.io使用](https://blog.csdn.net/wzxzRoad/article/details/125079935)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

韭菜盖饭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值