egg.socket.io后端开发

2024-05-14 13:04
文章标签 开发 后端 io socket egg

本文主要是介绍egg.socket.io后端开发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 安装egg-socket.io

npm i egg-socket.io@4.1.6 --save

最好指定egg-socket.io的版本号,比如我后端使用"egg-socket.io": "^4.1.6", 因为跟前端的socket.io-client是一一关联,socket.io-client用高版本或低版本,都不兼容了,可以查看egg-socket.io的依赖文件,比如在node_modules中可以看到客户端socket.io-client使用的版本号:

比如我前端安装依赖:

"socket.io-client": "^2.5.0",

2. config/plugin.js引入

io: {enable: true,package: 'egg-socket.io',},

 

3.配置socket.js

/config/config/socket.jsmodule.exports = config => {// socket.ioconfig.io = {init: {wsEngine: 'ws', //ws 引擎},namespace: {'/': {connectionMiddleware: [//'auth', 连接中间件],packetMiddleware: [],}},redis: {host: '127.0.0.1',port: 6379,auth_pass: '',db: 2,},}
}

4.在config.default.js引入

require('./config/socket')(config)//socket.io

5.使用路由,

/router/platform.js'use strict';module.exports = app => {const { router, controller, io } = app;//测试 这里的'test'跟前端的路由要保持一致io.of('/').route('test', io.controller.test.test)io.of('/').route('connenct',io.controller.notice.connenct)//router.get('/index', controller.home.index);};

6.先来看下egg-socket.io的项目目录结构

your-project-name
├── app
│   ├── extend
│   │   └── helper.js
│   ├── io
│   │   ├── controller
│   │   │   └── chat.js
│   │   └── middleware #插件中间件, 基于 socket 模型设计,处理 socket.io 请求 
│   │       ├── auth.js #对应刚才配置的connectionMiddleware: ['auth']
│   └── router.js
├── config
└── package.json

在app目录下新建io文件夹,io下新建controller

'use strict';const Controller = require('egg-cloud').Controller;/*** 测试socket*/class TestController extends Controller {async test() {const { ctx, app } = this;//测试连接 控制台自动输出//console.log("-------test--------")//前端传过来的参数let message = ctx.args[0];console.log(message);}}module.exports = TestController;

8. 使用知识

使用 emit() 方法发送事件: 通常用在后端,触发给前端,前端用on()接收

使用 on() 方法监听事件: 通常用在前端

9. 比如这里的路由是

//测试 这里的'test'跟前端的路由要保持一致io.of('/').route('test', io.controller.test.test)

10. 在前端怎么写呢?

actions: {//连接socketconnectSocket({ state, dispatch }) {const S = io('http://127.0.0.1:7001', {query: {},//可以传token参数transports: ['websocket'],timeout: 5000})//监听连接S.on('connect', () => {console.log("socket.io已连接")//测试推送一条消息S.emit('test', '123456')/触发给后端})//监听失败S.on('error', () => {state.socket = null})//监听断开S.on('disconnect', () => {state.socket = null})}}

后端的controller方法的test 就能收到

async test() {const { ctx, app } = this;//测试连接 控制台自动输出//console.log("-------test--------")//前端传过来的参数let message = ctx.args[0];console.log(message);}

这篇关于egg.socket.io后端开发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/988805

相关文章

VSCode开发中有哪些好用的插件和快捷键

《VSCode开发中有哪些好用的插件和快捷键》作为全球最受欢迎的编程工具,VSCode的快捷键体系是提升开发效率的核心密码,:本文主要介绍VSCode开发中有哪些好用的插件和快捷键的相关资料,文中... 目录前言1、vscode插件1.1 Live-server1.2 Auto Rename Tag1.3

Agent开发核心技术解析以及现代Agent架构设计

《Agent开发核心技术解析以及现代Agent架构设计》在人工智能领域,Agent并非一个全新的概念,但在大模型时代,它被赋予了全新的生命力,简单来说,Agent是一个能够自主感知环境、理解任务、制定... 目录一、回归本源:到底什么是Agent?二、核心链路拆解:Agent的"大脑"与"四肢"1. 规划模

Python+wxPython开发一个文件属性比对工具

《Python+wxPython开发一个文件属性比对工具》在日常的文件管理工作中,我们经常会遇到同一个文件存在多个版本,或者需要验证备份文件与源文件是否一致,下面我们就来看看如何使用wxPython模... 目录引言项目背景与需求应用场景核心需求运行结果技术选型程序设计界面布局核心功能模块关键代码解析文件大

C++多线程开发环境配置方法

《C++多线程开发环境配置方法》文章详细介绍了如何在Windows上安装MinGW-w64和VSCode,并配置环境变量和编译任务,使用VSCode创建一个C++多线程测试项目,并通过配置tasks.... 目录下载安装 MinGW-w64下载安装VS code创建测试项目配置编译任务创建 tasks.js

Java通过ServerSocket与Socket实现通信过程

《Java通过ServerSocket与Socket实现通信过程》本文介绍了Java中的ServerSocket和Socket类,详细讲解了它们的构造方法和使用场景,并通过一个简单的通信示例展示了如何... 目录1 ServerSocket2 Socket3 服务器端4 客户端5 运行结果6 设置超时总结1

浅析Python中如何处理Socket超时

《浅析Python中如何处理Socket超时》在网络编程中,Socket是实现网络通信的基础,本文将深入探讨Python中如何处理Socket超时,并提供完整的代码示例和最佳实践,希望对大家有所帮助... 目录开篇引言核心要点逐一深入讲解每个要点1. 设置Socket超时2. 处理超时异常3. 使用sele

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二

Linux五种IO模型的使用解读

《Linux五种IO模型的使用解读》文章系统解析了Linux的五种IO模型(阻塞、非阻塞、IO复用、信号驱动、异步),重点区分同步与异步IO的本质差异,强调同步由用户发起,异步由内核触发,通过对比各模... 目录1.IO模型简介2.五种IO模型2.1 IO模型分析方法2.2 阻塞IO2.3 非阻塞IO2.4