Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

net mauı WebSocket çalıştırma hatası #2797

Open
zor038 opened this issue Nov 12, 2024 · 0 comments
Open

net mauı WebSocket çalıştırma hatası #2797

zor038 opened this issue Nov 12, 2024 · 0 comments

Comments

@zor038
Copy link

zor038 commented Nov 12, 2024

daha önce c# consol da kullandığım bir WebSocket uygulamam var consol da çalışmasında hiç sorun yaşamadım fakat, net mauı ile çoklu ortam projesine dönüştürmek istiyorum. bilgisayarımda android emülatör çalışmıyor. o yüzden testlerimi windows emülatörde yapıyorum.

aşağıda paylaştığım kodda brekboint le kontrol ettiğimde WebSocketReceiveResult result = await webSocket.ReceiveAsync(new ArraySegment(buffer), CancellationToken.None); kısmına geldiğinde takılıp kalıyor herhangi bir dönüş alamıyorum. uygulamayı yanlış bir şekilde mi başlatıyorum yada eklemem gereken bir kısım mı eksik bilemedim.

kodlarım aşağıdaki şekilde bana yol gösterirseniz memnun olurum :(

`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<byte>(buffer), CancellationToken.None);

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

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

                }
                else if (model != null && model.Type == "T")
                {
                    Tick tickmodel = JsonConvert.DeserializeObject<Tick>(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<Byte>(encoded, 0, encoded.Length);
                await webSocket.SendAsync(buffer, WebSocketMessageType.Text, true, CancellationToken.None);

            }
        }
    }
}

}`

kodu başlatmak için kullandığım kod aşağıdaki gibi
` public MainPage()
{
InitializeComponent();

 WebSocket.ConnectToWebsocket();

}`

konuyla ilgili destek olursanız çok memnun kalırım. Şimdiden teşekkür ederim

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant