345 Star 2.7K Fork 807

GVP若汝棋茗/TouchSocket

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
wscommandlineplugin.mdx 3.05 KB
一键复制 编辑 原始数据 按行查看 历史
若汝棋茗 提交于 2个月前 . 文档:存档v3.0文档
---
id: wscommandlineplugin
title: 快捷事务命令行
---
### 定义
命名空间:TouchSocket.Http.WebSockets <br/>
程序集:[TouchSocket.Http.dll](https://www.nuget.org/packages/TouchSocket.Http)
## 一、说明
快捷事务命令行,是用于**WebSocket**的快捷事务实现,让WS在**Text**文本中,用最简单的文字消息即可完成相关事务的执行。
## 二、使用
### 2.1 声明事务插件
新建类型,继承自`WebSocketCommandLinePlugin`。然后在里面写一些需要的事务方法。
声明的事务方法必须满足:只能是实例方法、必须是公开方法、方法名以`Command`结尾。
```csharp showLineNumbers
/// <summary>
/// 命令行插件。
/// 声明的方法必须为公开实例方法、以"Command"结尾,且支持json字符串,参数之间空格隔开。
/// </summary>
public class MyWSCommandLinePlugin : WebSocketCommandLinePlugin
{
public MyWSCommandLinePlugin(ILog logger) : base(logger)
{
}
public int AddCommand(int a, int b)
{
return a + b;
}
//当第一个参数,直接或间接实现ITcpSession接口时,会收集到当前请求的客户端,从而可以获取IP等。
public SumClass SumCommand(IHttpClientBase client, SumClass sumClass)
{
sumClass.Sum = sumClass.A + sumClass.B;
return sumClass;
}
}
```
### 3.1 注册使用
直接通过插件添加即可。
```csharp {14}
var service = new HttpService();
await service.SetupAsync(new TouchSocketConfig()//加载配置
.SetListenIPHosts(7789)
.ConfigureContainer(a =>
{
a.AddConsoleLogger();
})
.ConfigurePlugins(a =>
{
a.UseWebSocket()//添加WebSocket功能
//.SetWSUrl("/ws")//设置url直接可以连接。
.SetVerifyConnection(VerifyConnection)
.UseAutoPong();//当收到ping报文时自动回应pong
a.Add<MyWSCommandLinePlugin>();
}));
await service.StartAsync();
```
### 3.2 调用
调用数据格式:
以事务方法的**方法名**为第一个参数(不包含Command),后续参数直接写,多个参数用**空格**隔开。例如:`Add 10 20`
```csharp {18}
var client = new WebSocketClient();
await client.SetupAsync(new TouchSocketConfig()
.ConfigureContainer(a =>
{
a.AddConsoleLogger();
})
.ConfigurePlugins(a =>
{
a.Add(typeof(IWebSocketReceivedPlugin), async (IHttpClientBase c, WSDataFrameEventArgs e) =>
{
client.Logger.Info($"收到Add的计算结果:{e.DataFrame.ToText()}");
await e.InvokeNext();
});
})
.SetRemoteIPHost("ws://127.0.0.1:7789/ws"));
await client.ConnectAsync();
client.SendWithWS("Add 10 20");
```
:::tip 提示
快捷事务命令行不仅可以添加在服务器,客户端也可以添加使用。
:::
:::tip 提示
快捷事务参数支持Json字符串,但是需要注意的是,调用的Json字符串也不能包含空格。
:::
[本文示例Demo](https://gitee.com/RRQM_Home/TouchSocket/tree/master/examples/WebSocket/WebSocketConsoleApp)
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C#
1
https://gitee.com/RRQM_Home/TouchSocket.git
git@gitee.com:RRQM_Home/TouchSocket.git
RRQM_Home
TouchSocket
TouchSocket
master

搜索帮助