Les meilleurs développeurs C# freelances sont sur Codeur.com

C# & Websockets : modifier un script

 Fermé · Moins de 500 € · 3 offres · 823 vues · 7 interactions


Bonjour

Dans le script ci dessous un websocket est ouvert et ecouté en permanence.

Je souhaiterai faire modifier le script pour parvenir à quelque chose comme ça :

string reponse = envoimessage("le message envoyé");

...

string reponse(string message)
{
envoit le message sur e websocket ouvert en permanence
attend la réponse
teste la réponse
retourne la réponse
}

Je ne suis pas arreté sur cette architecture etant donné que je découvre et c# et les websockets (je developpe en delphi)

le script original est ici [URL visible pour les membres Pro] (selectionner le language c# dans la liste déroulante)

le script :

using System;
using System.Text;
using System.Threading.Tasks;
using System.Net.WebSockets;
using System.Threading;
using System.Net;

namespace BinaryWSDemo
{
class BinaryWS
{
private ClientWebSocket ws = new ClientWebSocket();
private Uri uri = new Uri("wss://ws.binaryws.com/websockets/v3?app_id=1089");

public async Task SendRequest(string data)
{

while(this.ws.State == WebSocketState.Connecting){};
if (this.ws.State != WebSocketState.Open)
{
throw new Exception("Connection is not open.");
}

var reqAsBytes = Encoding.UTF8.GetBytes(data);
var ticksRequest = new ArraySegment<byte>(reqAsBytes);

await this.ws.SendAsync(ticksRequest,
WebSocketMessageType.Text,
true,
CancellationToken.None);

Console.WriteLine("The request has been sent: ");
Console.WriteLine(data);
Console.WriteLine("\r\n \r\n");


}

public async Task StartListen(){
WebSocketReceiveResult result;
while (this.ws.State == WebSocketState.Open){
var buffer = new ArraySegment<byte>(new byte[1024]);
do
{
result = await this.ws.ReceiveAsync(new ArraySegment<byte>(buffer.Array), CancellationToken.None);

if (result.MessageType == WebSocketMessageType.Close)
{
Console.WriteLine("Connection Closed!");
break;
}
else
{
var str = Encoding.UTF8.GetString(buffer.Array, 0, result.Count);
Console.WriteLine("Received Data at: " + DateTime.Now);
Console.WriteLine(str);
Console.WriteLine("\r\n");
}

} while (!result.EndOfMessage);
}
}

public async Task Connect(){
Console.WriteLine("Prepare to connect to: " + this.uri.ToString());
Console.WriteLine("\r\n");

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11;
await ws.ConnectAsync(uri, CancellationToken.None);

Console.WriteLine("The connection is established!");
Console.WriteLine("\r\n");
}

static void Main(string[] args)
{

string data = "{\"ticks\":\"R_100\"}";

var bws = new BinaryWS();
bws.Connect().Wait();

bws.SendRequest(data).Wait();
bws.StartListen();

Console.ReadLine();
}
}
}

merci pour vos offres

Budget indicatif : Moins de 500 €

Publication : 02 mai 2017 à 20h46

Profils recherchés : Développeur C# freelance

Le profil du client est reservé aux prestataires abonnés

Créer un compte

3 freelances ont répondu à ce projet

3 propositions de devis en moins de 2h

chenaina_abdelaziz_ingenieur_dotnet_tataouine Développeur C#
Leoxia France Agence de développement C#
Elegant_Design Agence web
Publier un projet similaire

Chaque jour, des centaines de clients utilisent Codeur.com pour trouver un prestataire. Créez votre compte dès maintenant, remplissez votre profil et trouvez de nouveaux clients.

Trouver des nouveaux clients