This repository was archived by the owner on Mar 29, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
2 (1). 主框和实例化 (基础端)
DavidMeow edited this page Jan 13, 2023
·
2 revisions
Q: 什么是
主框
呢?A : 因为您作为本SDK的调用方, 我们并不能确定您何时载入本程序以及处理程序,
所以需要您自动使用SDK内的流程进行处理, 本SDK的标准最简流程, 便称为主框
当然的, 您作为调用方, 需要在合适的地方添加本程序的主框
进行注册.
本Wiki内, 我们假定您会生成一个控制台程序
, 并且使用.net6的顶级语句
,
则主框如下:
//在Program.cs内
Global.G_Debug_Flag = 3;
MeowMiraiLib.Client c = new("ws://ip:port/all?verifyKey=...&qq=...");
c.Connect();
//c.ConnectAsync()
c.OnFriendMessageReceive += (s, e) => { };
//c.事件 += (s,e) => { 处理函数 }
while (true) //阻塞控制台
{
switch (System.Console.ReadLine()) // 控制台操作
{
//.....
}
}
Q: 那么
端
又是什么呢?A:
端
是本SDK提供的方便接受和发送数据的一种实例
,
您的程序
需要通过这种实例
来和您的后端交互, 以完成任务,
端
分为收信端
和发信端
MeowMiraiLib.Client c = new("ws://test.com.cn:8888/all?verifyKey=123456&qq=1234567");
MeowMiraiLib.Client c2 = new("test.com.cn", 8888, "123456", 1234567, "all");
方案为, 在顶级语句外进行实例化
, 在顶级语句内引用.
例如在ClientX.cs文件内,实例化所有您需要使用的端.
您可以使用同时使用多个端
, 或者重复链接
一个端, 他们会自动组织
Session和其他问题.
注:本教程后续的发送端均调用在这个类
//文件ClientX.cs
namespace Test
{
public static class ClientX
{
//换成自己要用的参数
public static MeowMiraiLib.Client c = new("ws://test.com.cn:8888/all?verifyKey=123456&qq=1234567");
public static MeowMiraiLib.Client c2 = new("test.com.cn", 8888, "123456", 1234567, "all");
}
}
顶级语句则变成如下写法:
using System;
using Test; //项目名
using static Test.ClientX;
Global.G_Debug_Flag = 3;
c.Connect();
c.OnFriendMessageReceive += MessageX.OnFriendMessageReceive;
//c.事件 += (s,e) => { 处理函数 }
while (true)
{
switch (Console.ReadLine()) // 控制台操作
{
//.....
}
}
**1.端可以实例化多个么? **
A: 可以, 因为本SDK只负责交互, 而
不负责
怎么交互, 由您控制什么信息
发给谁, 所以您也需要注意, 如果您尝试在多个端互相交互, 请确认您要发送的对象主体存在, 否则可能报错.
**2.端之间是否是线程安全的? **
A: 当前来讲, 端和端之间是孤立的, 并没有
任何形式上的关系
, 如果您在两个或多个端之间创造了所谓的共享缓冲区
, 那对于共享缓冲区
的线程安全由您的编程代码决定.
**3.端是由什么作为基底的? **
A: 我们使用
-WebSocket- (正向)
作为基底, 您的端是 Mirai后端的客户端, 而Mirai是服务端.
4.SDK内还引用了什么?
- JamesNK/Newtonsoft.Json 用于解析Json.
- kerryjiang/WebSocket4Net 用于建立WS信息.