Net maui не может получить информацию из API WebSocket [закрыто]C#

Место общения программистов C#
Ответить
Anonymous
 Net maui не может получить информацию из API WebSocket [закрыто]

Сообщение Anonymous »

У меня есть приложение WebSocket, которое я раньше использовал в консоли C#. У меня не было проблем с его работой в консоли, но я хочу преобразовать его в мультимедийный проект с помощью netmau. Эмулятор Android не работает на моем компьютере. Вот почему я провожу тесты в эмуляторе Windows.
Когда я проверяю с помощью brekboint код, которым поделился ниже, он зависает, когда достигает WebSocketReceiveResult result = await webSocket.ReceiveAsync(new ArraySegment( буфер), CancellationToken.None); Я не могу получить никакого ответа. Я не знаю, запускаю ли я приложение неправильно или мне нужно добавить какую-то часть.
Мои коды следующие, я был бы рад, если бы вы помогли мне: (

Код: Выделить всё

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.WebSockets;
using System.Text;
using System.Threading.Tasks;

namespace MauiApp1.Model
{
public static class WebSocket
{
public static string checker = Ayarlar.ComputeSha256Hash(Ayarlar.APIKEY + Ayarlar.hostname + "/ws");
public static ClientWebSocket webSocket = new ClientWebSocket();
public static DateTime senddate = DateTime.Now;
public static async Task ConnectToWebsocket()
{
try
{
webSocket.Options.SetRequestHeader("APIKEY", Ayarlar.APIKEY);
webSocket.Options.SetRequestHeader("Authorization", Ayarlar.HASH);
webSocket.Options.SetRequestHeader("Checker", checker);
await webSocket.ConnectAsync(new Uri(Ayarlar.websocketurl), CancellationToken.None);

await Task.WhenAll(Receive(webSocket), Send(webSocket));
}
catch (Exception ex)
{
}
}
private static async Task Receive(ClientWebSocket webSocket)
{
byte[] buffer = new byte[1024];
while (webSocket.State == System.Net.WebSockets.WebSocketState.Open)
{
try
{
WebSocketReceiveResult result = await webSocket.ReceiveAsync(new ArraySegment(buffer), CancellationToken.None);

string a = System.Text.Encoding.UTF8.GetString(buffer, 0, result.Count);
WebsocketData model = new WebsocketData();
model = JsonConvert.DeserializeObject(a);
if (model != null && model.Type == "D")
{
Depth depthmodel = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(model.Content));

Console.WriteLine(JsonConvert.SerializeObject(depthmodel));

}
else if (model != null && model.Type == "T")
{
Tick tickmodel = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(model.Content));

Console.WriteLine(JsonConvert.SerializeObject(tickmodel));

}

//Console.WriteLine(a);
}
catch (Exception ex)
{
}
}
if (webSocket.State != System.Net.WebSockets.WebSocketState.Open)
{
ConnectToWebsocket();
}
}

private static async Task Send(ClientWebSocket webSocket)
{

while (webSocket.State == System.Net.WebSockets.WebSocketState.Open)
{

if (senddate < DateTime.Now)
{
senddate = DateTime.Now.AddMinutes(15);
string message = "{\"Type\":\"H\",\"Token\":\"" + Ayarlar.HASH + "\"}";

var encoded = Encoding.UTF8.GetBytes(message);
var buffer = new ArraySegment(encoded, 0, encoded.Length);
await webSocket.SendAsync(buffer, WebSocketMessageType.Text, true, CancellationToken.None);

}
}
}
}
Для запуска кода я использую следующий код:

Код: Выделить всё

 public MainPage()
{
InitializeComponent();

WebSocket.ConnectToWebsocket();
}
Я был бы очень рад, если бы вы поддержали меня в этом вопросе. Заранее спасибо

Подробнее здесь: https://stackoverflow.com/questions/791 ... socket-api
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»