Websocket como? - página 4

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

Fedor, onde você estava?

Na verdade, estou aqui sentado, perplexo.

Uma janela apareceu com Usercontrol. Isso é tudo.

 

Encontramos este exemplo:

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

A tentativa de executá-lo em código Visual Studio é C#

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

Isto não vai funcionar.ClientWebSocket não é suportado em todas as versões Windows.

Eu lhe ofereci um caminho comprovado, mas você quer seguir seu próprio caminho e ter seus próprios solavancos. Esse é o seu direito.

Então, você não precisa realmente entrar em detalhes. Se você é bom em java, você pode usá-lo para escrever dlls.

Eu não disse que era bom em java. Eu o instalei, criei um projeto, não sei o que fazer a seguir. Preciso procurar por exemplos.

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

Fedor, qual é o propósito de pedir ajuda no fórum? Ninguém lhe dará um exemplo pronto, pois cada projeto é único. Somente os tijolos podem ser os mesmos. É exatamente isso que eles lhe oferecem.

Vamos começar com uma fácil: Você tem alguma experiência em programação? Pelo menos em mql? Você sabe o que é uma "classe" na programação?

Sim, é claro.

 
Fedor Arkhipov:

Olá a todos!

Tenho a tarefa de receber citações de huobi via websocket e construir um gráfico offline usando estas citações.

Percebi que isto não pode ser feito com meios padrão.

Tenho a idéia de escrever uma dll em java e usá-la para receber citações.

Tal implementação é possível?

Eu nunca fiz nada assim antes, por isso serei muito grato por sua ajuda!

Se você quiser usar Mql DLL para chamar Java, é mais frio que as amígdalas via gp :-)

mas se você realmente quiser, você pode. Mas, além disso, é preciso conhecer C em um nível suficiente e entender como os fios são dispostos dentro de MT, como e quando são criados/transformados.

há muitos artigos sobre como ser amigo de Java e C/C++, a primeira busca no google dá https://www.codeproject.com/Articles/993067/Calling-Java-from-Cplusplus-with-JNI.

ver artigos locais sobre como ser amigo de C/C++ e Mql

uma vez você pode sentar-se e fazer uma camada Mql->(c/c++ dll)->Java. Parece muito maternal em termos de depuração (as emoções têm que ser mantidas sob controle), mas uma vez feito, então use.

PS/ e há um sentimento de que a Mql está indo em direção à Sharp, e não é nada amigável com Java...então na versão 6 os esforços serão desperdiçados

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:

Eu não disse que conhecia java muito bem. Eu o instalei, criei um projeto, não sei o que fazer a seguir. Preciso procurar por exemplos.

Seja realista, você pode lidar com o protocolo entre o cliente/servidor? Obtenha uma libu pronta para a troca, caso contrário, você se afogará.

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

Sim, a versão russa.


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

Vamos dar um passo de cada vez? :)

Bem, se você me ajudar.
 
Алексей Барбашин:

É claro que sim. Espero que eu não seja o único. Basta tentar ser mais pró-ativo na resposta às mensagens.

ok
 

Feito por