Socket.io 的使用

Socket.io 是由js实现,基于 node.js ,支持 WebSocket 协议用于实时通信,跨平台的开源框架

一、文档

官方文档:Socket.IO

第三方中文文档: socket.io官方文档中文版 - 知乎

项目例子:在线聊天: 使用vue2和socket.io实现的在线聊天 (gitee.com)

 

二、 下载 Socket.Io

服务端下载

npm i socket.io@4.5.0

客户端下载

npm i socket.io-client

 

三、Socket.io 的使用

Socket.io 的搭建以及接收和发送信息的基本使用

 

1. 配置

服务端 引入并配置 Socket.io

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) => {
	console.log('建立链接');
    
    // 在这回调函数里面接收和转发信息
});

客户端 引入 Socket.io 并建立链接

import { io } from "socket.io-client";	// 引入下载的依赖
let socket = io.connect("http://localhost:3000/");	// 与服务端建议链接
// http://localhost:3000/ 这是服务端的地址

此时,服务端会输出 “建立链接” ,输出了这句话,证明客户端已经和服务端成功建立了链接

 

2. 发送和接收信息

socket.emit()         发送信息

socket.on()            接收信息

2.1 客户端向服务端发送信息

客户端 发送消息

socket.emit("login", '你好,我是客户端');

服务端 接收信息

socket.on('login', (data) => {
	 console.log( data ); // 你好,我是客户端
})

服务端输出 “你好,我是客户端” ,证明已经成功发送和接收消息

 

2.2 服务端向客户端发送信息

发送和接收和上面是一样的

服务端 发送信息

socket.emit("pushMsg", '你好,我是服务端');

客户端 接收信息

socket.on('pushMsg', (data) => {
	 console.log( data ); // 你好,我是服务端
})

 客户端输出 “你好,我是服务端” ,证明已经成功发送和接收消息

 

3. 客户端离开

当客户端与服务端断开连接,服务端能够通过 disconnecting 知道有客户端断开了链接

socket.on("disconnecting", () => {
    // 有客户端断开了链接
     console.log( "客户端断开链接了" );
});

 

四、 服务端发送信息

服务端有多种方法向客户端发送信息

 1. 只对自己发送信息

服务端只发送当前建立链接的客户端

socket.on('login', (data) => {
    socket.emit('pushMsg', '你好,我是服务端')
})

 2. 对指定的客户端发送信息

服务端能对所有建立连接的指定客户端发送信息

socket.on('login', (id,data) => {
    // 这个 id 是客户端与服务端建立连接时生成的,可能通过 socket.id 获取
   socket.to(id).emit('pushMsg', data)
})

 

 3. 对所有客户端发送信息

对所有建立链接的客户端发送信息

socket.on('login', (id,data) => {
   // 通过实例调用 emit ,向所有客户端发送信息
   io.emit('pushMsg', data)
})

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
引用中提到了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 ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值