Websocket come? - pagina 4

 
Алексей Барбашин:

Fedor, dov'eri?

In realtà sono seduto qui, perplesso.

È apparsa una finestra con Usercontrol. Questo è tutto.

 

Ho trovato questo esempio:

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();
        }
    }
}

Cercando di eseguirlo in Visual Studio il codice è C#

 
Алексей Барбашин:

Questo non funzionerà.ClientWebSocket non è supportato in tutte le versioni di Windows.

Ti ho offerto una via collaudata, ma tu vuoi andare per la tua strada e prendere i tuoi urti. Questo è un suo diritto.

Allora non c'è bisogno di diventare acuti. Se sei bravo con java, puoi usarlo per scrivere DLL.

Non ho detto di essere bravo con il java. L'ho installato, ho creato un progetto e non so cosa fare dopo. Devo cercare degli esempi.

 
Алексей Барбашин:

Fedor, qual è lo scopo di chiedere aiuto sul forum? Nessuno vi darà un esempio pronto, perché ogni progetto è unico. Solo i mattoni possono essere uguali. Questo è esattamente ciò che vi offrono.

Cominciamo con una facile: hai qualche esperienza di programmazione? Almeno in mql? Sai cos'è una "classe" nella programmazione?

Sì, certo.

 
Fedor Arkhipov:

Ciao a tutti!

Ho un compito per ricevere quotazioni da huobi via websocket e costruire un grafico offline usando queste quotazioni.

Ho capito che questo non può essere fatto con mezzi standard.

Ho un' idea per scrivere una dll in java e usarla per ricevere le citazioni.

È possibile una tale implementazione?

Non ho mai fatto niente del genere prima, quindi vi sarò molto grato per il vostro aiuto!

Se vuoi usare Mql DLL per chiamare Java, è più figo delle tonsille via gp :-)

Ma se lo volete davvero, potete farlo. Ma in aggiunta, dovete conoscere il C a un livello sufficiente e capire come sono disposti i thread in MT, come e quando vengono creati/trasformati.

ci sono molti articoli su come essere amici di Java e C/C++, la prima ricerca su google dà https://www.codeproject.com/Articles/993067/Calling-Java-from-Cplusplus-with-JNI.

vedere gli articoli locali su come essere amici con C/C++ e Mql

si può una volta sedersi e fare il livello Mql->(c/c++ dll)->Java. Sembra molto materno in termini di debug (le emozioni devono essere tenute sotto controllo), ma una volta fatto poi utilizzare.

PS/ e c'è la sensazione che Mql stia andando verso Sharp, e non è affatto amichevole con Java...quindi nella versione 6 gli sforzi saranno sprecati

Calling Java from C++ with JNI
  • cth027
  • www.codeproject.com
How do we return an array of integers from Java to C++. And this question follows up to 2d and 3d arrays as well. Also what would be the method to call Java function (assuming we are calling static function). Example: ID: method = m_pJVMInstance->m_pEnv->GetStaticMethodID(class, "getIntDataS", "([Ljava/lang/String;)[I"); Calling: jint...
 
Fedor Arkhipov:

Non ho detto che conoscevo bene Java. L'ho installato, ho creato un progetto e non so cosa fare dopo. Devo cercare degli esempi.

Siate realistici, potete gestire il protocollo tra il client/server? Procuratevi un libu pronto per lo scambio, altrimenti affogherete.

 
Алексей Барбашин:

Sì, la versione russa.


 
Алексей Барбашин:

Vogliamo fare un passo alla volta? :)

Beh, se mi aiuti.
 
Алексей Барбашин:

Certo che lo farò. Spero di non essere l'unico. Cerca solo di essere più proattivo nel rispondere ai messaggi.

ok
 

Fatto da

Motivazione: