Websocket nasıl yapılır? - sayfa 4

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

Fedor, nerede durdun?

Aslında oturuyorum, aptal.

Usercontrol ile pencere çıktı. Bu kadar.

 

Bu örneği buldum:

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

Visual Studio kodunda çalıştırmaya çalışıyorum C#

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

Bu işe yaramayacak. ClientWebSocket, tüm Windows sürümlerinde desteklenmez.

Sana kanıtlanmış bir yol önerdim ama sen kendi yoluna gitmek ve tümseklerini doldurmak istiyorsun. Haklısın.

O zaman, prensipte, keskin bir şekilde tırmanmanız için hiçbir neden yoktur. Java'yı iyi bildiğine göre üzerine dll yaz.

Java'yı iyi bildiğimi söylemedim. Yükledim, bir proje oluşturdum , sonra ne yapacağımı bilmiyorum. Örnekler aramamız gerekiyor.

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

Fedor, yardım için foruma hangi amaçla başvurdunuz? Her proje kendi yolunda benzersiz olduğundan, hiç kimse hazır bir örnek vermeyecektir. Sadece tuğlalar aynı olabilir. Size sundukları onlar.

Basitten başlayalım: herhangi bir programlama deneyiminiz var mı? En azından mql'de? Programlamada "sınıf" nedir biliyor musunuz?

Tabiiki

 
Fedor Arkhipov :

Herkese selam!

Websocket aracılığıyla huobi'den fiyat teklifi almak ve bu alıntılara dayalı olarak çevrimdışı bir grafik oluşturmak gibi bir görev vardı.

Bunu standart yollarla organize etmenin imkansız olduğunu anladım.

Java'da bir dll yazmak ve onu tırnak almak için kullanmak için bir fikir vardı .

Böyle bir uygulama mümkün müdür?

Bunu daha önce hiç yapmadım, yardım için çok minnettar olurum!

Java'yı çağıran Mql DLL'den kullanın, zhp :-) aracılığıyla bademciklerden daha serin

ama gerçekten istiyorsan yapabilirsin. Ancak bunun yanında yeterli düzeyde C bilmeniz ve threadlerin MT içerisinde nasıl düzenlendiğini, nasıl ve ne zaman oluşturulduğunu/yeniden yapıldığını anlamanız gerekir.

Java ve C/C++ ile nasıl arkadaş olunur birçok makale, Google'a ilk gittiğinizde https://www.codeproject.com/Articles/993067/Calling-Java-from-Cplusplus-with-JNI alırsınız

C/C++ ve Mql ile nasıl arkadaş olunur, yerel makalelere bakın

bir kere oturup bir ara katman Mql->(c/c++ dll)->Java yapabilirsiniz. Hata ayıklama açısından çok müstehcen görünüyor (duygular kontrol altında tutulmalıdır), ancak bir kez yapıldıktan sonra kullanılır.

PS/ ve Mql'nin keskinliğe doğru ilerlediği hissi var, ancak Java ile hiç dost değil .. yani 6. sürümde çabalar boşa gidecek

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 :

Java'yı iyi bildiğimi söylemedim. Bir proje kurdum, bir proje oluşturdum, bundan sonra ne yapacağımı bilmiyorum. Örnekler aramamız gerekiyor.

Gerçekçi olun, istemci/sunucu arasındaki protokolde ustalaşın? Değişim için hazır bir kitaplık alın, yoksa boğulursunuz.

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

Evet, Rus versiyonu.


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

Adım adım gidelim mi? :)

Bana yardım edersen.
 
Алексей Барбашин :

Tabii ki yardım edeceğim. Ve umarım sadece ben değilimdir. Sadece mesajlara cevap vermek için elinizden gelenin en iyisini yapın.

tamam
 

Yapılmış