Websocket comment ? - page 4

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

Fedor, où étais-tu ?

Je suis en fait assis ici, perplexe.

Une fenêtre s'est ouverte avec Usercontrol. C'est tout.

 

J'ai trouvé cet exemple :

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

J'essaie de l'exécuter dans Visual Studio. Le code est en C#.

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

Cela ne fonctionnera pas.ClientWebSocket n'est pas supporté par toutes les versions de Windows.

Je t'ai proposé une méthode éprouvée, mais tu veux suivre ta propre voie et avoir tes propres problèmes. C'est votre droit.

Alors tu n'as pas besoin de te mettre dans le vif du sujet. Si vous êtes bon en java, vous pouvez l'utiliser pour écrire des dlls.

Je n'ai pas dit que j'étais bon en java. Je l'ai installé, créé un projet, je ne sais pas quoi faire ensuite. Je dois chercher des exemples.

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

Fedor, quel est le but de demander de l'aide sur le forum ? Personne ne vous donnera d'exemple tout fait, car chaque projet est unique. Seules les briques peuvent être les mêmes. C'est exactement ce qu'ils vous proposent.

Commençons par une question facile : avez-vous de l'expérience en programmation ? Au moins en mql ? Savez-vous ce qu'est une "classe" en programmation ?

Oui, bien sûr.

 
Fedor Arkhipov:

Bonjour à tous !

J'ai une tâche qui consiste à recevoir des cotations de huobi via websocket et à construire un graphique hors ligne en utilisant ces cotations.

J'ai réalisé que cela ne peut pas être fait en utilisant des moyens standards.

J'ai l 'idée d'écrire un dll en java et de l'utiliser pour recevoir des devis.

Une telle mise en œuvre est-elle possible ?

Je n'ai jamais rien fait de tel auparavant, je vous serai donc très reconnaissant de votre aide !

Si vous voulez utiliser Mql DLL pour appeler Java, c'est plus cool que les amygdales via gp :-)

Mais si vous le voulez vraiment, vous pouvez. Mais en plus, vous devez connaître le C à un niveau suffisant et comprendre comment les fils sont disposés dans MT, comment et quand ils sont créés/transformés.

Il existe de nombreux articles sur la façon d'être ami avec Java et C/C++, la première recherche sur Google donne https://www.codeproject.com/Articles/993067/Calling-Java-from-Cplusplus-with-JNI.

voir les articles locaux sur la façon d'être amis avec C/C++ et Mql

vous pouvez une fois vous asseoir et faire la couche Mql->(dll c/c++)->Java. Il semble très maternel en termes de débogage (les émotions doivent être gardées en échec), mais une fois fait, alors utiliser.

PS/ et on a l'impression que Mql se dirige vers Sharp, et qu'il n'est pas du tout compatible avec Java... donc, dans la version 6, les efforts seront gaspillés.

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:

Je n'ai pas dit que je connaissais très bien la Java. Je l'ai installé, créé un projet, je ne sais pas quoi faire ensuite. Je dois chercher des exemples.

Soyez réaliste, pouvez-vous gérer le protocole entre le client et le serveur ? Obtenez une libu prête pour l'échange, sinon vous vous noierez.

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

Oui, la version russe.


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

Devons-nous prendre une étape à la fois ? :)

Eh bien, si vous m'aidez.
 
Алексей Барбашин:

Bien sûr que je le ferai. J'espère que je ne suis pas le seul. Essayez simplement d'être plus proactif dans vos réponses aux messages.

ok
 

Fabriqué par