Les meilleurs développeurs C# freelances sont sur Codeur.com
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
3 freelances ont répondu à ce projet
3 propositions de devis en moins de 2h