QQbot第一弹-nonebot的原理——gocqhttp的数据包

在这里插入图片描述


title: ‘QQbot第一弹:nonebot的原理————go-cqhttp的数据包’
date: 2023-01-11 22:03:53
tags: nonebot

导论

  1. go-cqhttp的链接
    • 项目的概述
  2. go-cqhttp与nonebot的通信连接
    • 连接方式
    • socket服务器的接收实例
    • websocket服务器的接收实例

go-cqhttp的链接

  • 项目的概述

go-cqhttp,基于 Mirai 以及 MiraiGo 的 OneBot Golang 原生实现的项目,主力是go语言编写(俺也不会捏🤗)

(反正就是ddl很nb哒←明明什么都不知道的小白👈😂)

它的兼容性:

接口
  • http api
  • 反向http post
  • 正向websocket
  • 反向websocket

性能

  • 在关闭数据库的情况下, 加载 25 个好友 128 个群运行 24 小时后内存使用为 10MB 左右. 开启数据库后内存使用将根据消息量增加 10-20MB , 如果系统内存小于 128M 建议关闭数据库使用。

go-cqhttp 帮助中心

go-cqhttp


go-cqhttp与nonebot的通信连接

  • 连接方式

go-cqhttp与nonebot的链接可以选择gc提供的接口的几种方式

interface

我想要反向websocket进行获取,就是我作websoocket的服务器,让go-cqhttp作客户端给我们发送消息(其实是因为不是很了解这些接口),我好菜😭😭😭

choose

选择3,反向websocket,这样也可以看看go-cqhttp的到底发的什么玩意😋😋😋

  • socket服务器的简单实例

我们先打开go-cqhttp并登录

在这里插入图片描述

下面是一个简单的socket服务器,那么为什么要用socket而不是websocket捏,因为我搞错了> 😋,因为我也想知道如果协议不对,go-cqhttp会发个什么东西过来😊😊😊

import socket
server = socket.socket(socket.AF_INET, socket.sock_STREAM)
server.bind(("", port)) # 端口号
server.listen(126) # 设置监听,参数为最大队列数
new_socket, path = server.sccept()
while True:
data = new_socket.recv()
if len(data) != 0:
  print(data.decode("utf-8"))
breack
new_socket.close()
server.close()

↑(什么垃圾代码😭😭😭)

运行之后,出现一次心跳包后就close了,说明go-cqhttp客户端发现协议不对,主动断开链接了:

在这里插入图片描述

显示unexpected EOF,至于是什么意思。。。(自行baidu😊👈😂)

我们看看python的socket服务端,它为我们提供了更详细的内容:

在这里插入图片描述

发现Connection: UpgradeUpgrade: websocket,意思就是说要更换成websocket

好!那就换吧🤗🤗🤗


  • websocket服务器的接收实例

我使用python写了一个简单的异步websocket服务器,用json来解析json数据

import websocket
import asyncio
import json
async def data(websocket, path): #创建一个异步回调函数data,传入两个参数,websocket套接字,path数据协议
 async for message in websocket: # 迭代出websocket里面的数据
     j = json.loads(message)
     print(j)
asyncio.get_event_loop().run_until_compete(websocket.server(data, "localhost", post)) # 传入post,host,和
asyncio.get_event_loop().run_forever()

我们通过异步的方式接收代码,得到的数据可以分为三种

连接成功的提示消息:

在这里插入图片描述

与客户端的心跳❤️包:

在这里插入图片描述

对应的消息数据:

在这里插入图片描述

这其中的就包括相应的消息数据time等等👈😊,也就是有了nb的第一版(bushi

最后,挂一张老婆 Love丶伊卡洛斯(java大佬,b站up大厂员工(不干了)):

**Love丶伊卡洛斯**

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值