正如标题所述,如何将执行的命令的结果保存在字符串中?
SendCommand("server.hostname");
我的代码:
public void SendCommand(string command)
{
PacketModel packet = new PacketModel()
{
Identifier = 1,
Message = command,
Name = "RustManager"
};
string packetString = JsonConvert.SerializeObject(packet);
_webSocket.SendAsync(packetString, null);
}
public void GetServerHostname()
{
SendCommand("server.hostname");
}
答案 0 :(得分:3)
由于我的声誉不高,我无法评论-这是我在那之前会做的事情。
通常以Async
结尾的方法是异步的,并返回Task<T>
类型。
使用await
关键字会使您的方法异步,这就是为什么必须在方法标题中将其标记为async
的原因。
Link to C#-Documentation on the await keyword
由于我没有很多信息,因此很难说如何运行代码,但这也许会有所帮助:
public async void SendCommand(string command)
{
PacketModel packet = new PacketModel()
{
Identifier = 1,
Message = command,
Name = "RustManager"
};
string packetString = JsonConvert.SerializeObject(packet);
var result = await _webSocket.SendAsync(packetString, null);
}
编辑1:
获得一些新信息后,这是我的新答案:
您将this类用于websocket。如果您查看“ SendAsync”方法的签名,就会发现它返回void
(表示“无”)。因此,您将无法在此处“存储某种信息”。
该方法如下所示:
public void SendAsync (string data, Action<bool> completed)
{ [...] }
您将必须侦听WebSocket并等待服务器端响应。似乎该库通过事件来支持该操作:
ws.OnMessage += (sender, e) => {
...
};
因此,您可以定义事件处理程序来处理服务器响应。
如果要获取消息数据,则应访问e.Data或e.RawData属性。 e.Data属性返回一个字符串,因此它主要用于获取文本消息数据。 (source (GitHub Readme))
因此,要满足您的愿望,请尝试以下操作:
1。)在_websocket
实例初始化时,使用相应的事件处理程序订阅.OnMessage
事件。 (Some information about that)
2。)使用SendAsync
3。)如果您的服务器以对网络套接字的消息作为响应,则将触发OnMessage
事件,您将能够从事件参数e
中获取数据
(我没有对此进行测试-但它应该可以正常工作,因为示例中使用了这种方式)