当前位置: 首页 > news >正文

GO EASY 框架 之 NET 05

目录

1、Overview

2、Agent接口源码

3、收发消息

4、AgentHandle接收函数

5、conns.Conn接口


1、Overview

名称:agent.Agent 网络链接 接口;

DESC:网络链接,服务端与客户端通信媒介;

封装:进一步封装了net.Conn,封装了通用,以及自定义;

2、Agent接口源码

type Agent interface {WriteMsg(msg any)LocalAddr() net.AddrRemoteAddr() net.AddrClose()Destroy()UserData() anySetUserData(data any)LoopRecv(handle AgentHandle)
}

3、收发消息

  • 发送消息

Agent.WriteMsg(msg any);

直接将消息通过Agent发送到另一端,由Agent完成内部自动完成Encode/Decode(可在路由自定义Encode格式);

  • 接收消息

Agent.LoopRecv(handle AgentHandle),此接口是内部自动调用;

Agent 通过路由的消息协议调用handle并传Decode的消息内容传递给此handle;

接收消息的是一个个自定义的AgentHandle类型的函数;

消息ID,消息体,handle需要在路由中注册;

4、AgentHandle接收函数

type AgentHandle func([]byte, Agent)

在easy中,Route路由器将 typehandle.HandleMessage 转化成agent.AgentHandle 交给Agent处理;

5、conns.Conn接口

type Conn interface {ReadMsg() ([]byte, error)WriteMsg(args []byte) errorLocalAddr() net.AddrRemoteAddr() net.AddrClose()Destroy()Done() chan struct{}GetOption() *Option
}

Agent基于conns.Conn接口实现了网络链接;

Tcp,WebSocket等链接体都实现了conns.Conn;

因此使用TCP,以及WebSocket 等不同的网络协议,对外接口都是一样的agent.Agent的;

相关文章:

  • Banana Pi BPI-R4开源路由器开发板快速上手用户手册,采用联发科MT7988芯片设计
  • 2024 高级前端面试题之 HTTP模块 「精选篇」
  • vscode实时预览markdown效果
  • 类银河恶魔城学习记录1-5 CollisionCheck源代码 P32
  • 基于WordPress开发微信小程序2:决定开发一个wordpress主题
  • P8706 [蓝桥杯 2020 省 AB1] 解码--2024蓝桥杯冲刺省一
  • Javascript第八个知识点:函数
  • 华为数通方向HCIP-DataCom H12-831题库(填空题)
  • MySQL运维实战(5.3) MySQL数据乱码的一些情况
  • 【YAML语法规范指南】从入门到精通,揭秘神秘语法,引领配置文件解析指南(基础结构篇)
  • H5 简约四色新科技风引导页源码
  • Vue组件通信讲解[父子组件通信]
  • C++新特性 线程局部存储
  • Ingress
  • 爬取58二手房并用SVR模型拟合
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • const let
  • Effective Java 笔记(一)
  • js如何打印object对象
  • Mysql5.6主从复制
  • Python - 闭包Closure
  • Redux 中间件分析
  • vue的全局变量和全局拦截请求器
  • 前端js -- this指向总结。
  • 如何学习JavaEE,项目又该如何做?
  • 删除表内多余的重复数据
  • 使用权重正则化较少模型过拟合
  • 一个SAP顾问在美国的这些年
  • 云大使推广中的常见热门问题
  • ​低代码平台的核心价值与优势
  • ​水经微图Web1.5.0版即将上线
  • # C++之functional库用法整理
  • # 计算机视觉入门
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • (33)STM32——485实验笔记
  • (js)循环条件满足时终止循环
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (办公)springboot配置aop处理请求.
  • (第一天)包装对象、作用域、创建对象
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (剑指Offer)面试题34:丑数
  • (五)IO流之ByteArrayInput/OutputStream
  • (一)Neo4j下载安装以及初次使用
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (转)程序员疫苗:代码注入
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • ... 是什么 ?... 有什么用处?
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .NET MVC 验证码
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .net 设置默认首页