Websocket wie? - Seite 4

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

Fedor, wo warst du?

Eigentlich sitze ich hier und bin ratlos.

Es öffnete sich ein Fenster mit Usercontrol. Das ist alles.

 

Ich habe dieses Beispiel gefunden:

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

Der Versuch, ihn in Visual Studio auszuführen, ist C#-Code

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

Dies wird nicht funktionieren, daClientWebSocket nicht in allen Windows-Versionen unterstützt wird.

Ich habe Ihnen einen bewährten Weg angeboten, aber Sie wollen Ihren eigenen Weg gehen und sich Ihre eigenen Beulen holen. Das ist Ihr gutes Recht.

Dann brauchen Sie nicht scharf zu werden. Wenn Sie gut in Java sind, können Sie damit DLLs schreiben.

Ich habe nicht gesagt, dass ich gut in Java bin. Ich habe es installiert, ein Projekt erstellt und weiß nicht, was ich jetzt tun soll. Ich muss nach Beispielen suchen.

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

Fedor, was ist der Sinn, im Forum um Hilfe zu bitten? Niemand wird Ihnen ein fertiges Beispiel geben, da jedes Projekt einzigartig ist. Nur die Ziegel können gleich sein. Das ist genau das, was sie Ihnen bieten.

Beginnen wir mit einer einfachen Frage: Haben Sie Erfahrung im Programmieren? Zumindest in mql? Wissen Sie, was eine "Klasse" in der Programmierung ist?

Ja, natürlich.

 
Fedor Arkhipov:

Hallo zusammen!

Ich habe eine Aufgabe, um Kurse von Huobi über Websocket zu erhalten und ein Offline-Diagramm mit diesen Kursen zu erstellen.

Mir wurde klar, dass dies mit den üblichen Mitteln nicht möglich ist.

Ich habe die Idee, eine Dll in Java zu schreiben und sie zum Empfangen von Angeboten zu verwenden.

Ist eine solche Umsetzung möglich?

Ich habe so etwas noch nie gemacht, daher wäre ich für Ihre Hilfe sehr dankbar!

Wenn Sie Mql DLL verwenden möchten, um Java aufzurufen, ist das cooler als Tonsillen über gp :-)

aber wenn Sie es wirklich wollen, können Sie es tun. Darüber hinaus müssen Sie C auf einem ausreichenden Niveau beherrschen und verstehen, wie Threads in MT angeordnet sind und wie und wann sie erstellt/umgewandelt werden.

es gibt viele Artikel darüber, wie man sich mit Java und C/C++ anfreunden kann, die erste Google-Suche ergibt https://www.codeproject.com/Articles/993067/Calling-Java-from-Cplusplus-with-JNI.

siehe lokale Artikel über die Freundschaft mit C/C++ und Mql

Sie können sich einmal hinsetzen und die Mql->(c/c++ dll)->Java-Schicht machen. Es scheint sehr mütterlich in Bezug auf die Fehlersuche (Emotionen müssen im Zaum gehalten werden), aber einmal getan, dann verwenden.

PS/ und es gibt das Gefühl, dass Mql in Richtung Sharp geht, und es ist nicht freundlich mit Java überhaupt ... so in Version 6 Bemühungen verschwendet werden

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:

Ich habe nicht gesagt, dass ich Java sehr gut kenne. Ich habe es installiert, ein Projekt erstellt und weiß nicht, was ich jetzt tun soll. Ich muss nach Beispielen suchen.

Seien Sie realistisch: Können Sie das Protokoll zwischen Client und Server beherrschen? Besorgen Sie sich ein fertiges Libu für den Austausch, sonst werden Sie ertrinken.

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

Ja, die russische Version.


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

Sollen wir einen Schritt nach dem anderen machen? :)

Nun, wenn Sie mir helfen.
 
Алексей Барбашин:

Natürlich werde ich das. Ich hoffe, ich bin nicht der Einzige. Versuchen Sie einfach, proaktiver auf Nachrichten zu antworten.

ok
 

Hergestellt von