¿Cómo es el Websocket? - página 4

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

Fedor, ¿dónde estabas?

En realidad estoy aquí sentado, perplejo.

Apareció una ventana con Usercontrol. Eso es todo.

 

Encontré este ejemplo:

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

Tratando de ejecutarlo en el código de Visual Studio es C#

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

Esto no funcionará.ClientWebSocket no es compatible con todas las versiones de Windows.

Te he ofrecido un camino probado, pero quieres seguir tu propio camino y conseguir tus propios golpes. Está en su derecho.

Entonces, no es necesario que te pongas en plancha. Si eres bueno en java, puedes usarlo para escribir dlls.

No he dicho que sea bueno en java. Lo he instalado, he creado un proyecto y no sé qué hacer a continuación. Tengo que buscar ejemplos.

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

Fedor, ¿para qué sirve pedir ayuda en el foro? Nadie le dará un ejemplo ya hecho, ya que cada proyecto es único. Sólo los ladrillos pueden ser los mismos. Eso es exactamente lo que te ofrecen.

Empecemos con una fácil: ¿tiene experiencia en programación? ¿Al menos en mql? ¿Sabes lo que es una "clase" en programación?

Sí, por supuesto.

 
Fedor Arkhipov:

Hola a todos.

Tengo una tarea para recibir cotizaciones de huobi a través de websocket y construir un gráfico offline utilizando estas cotizaciones.

Me he dado cuenta de que esto no puede hacerse con los medios habituales.

Tengo una idea para escribir una dll en java y usarla para recibir cotizaciones.

¿Es posible esta aplicación?

Nunca he hecho algo así antes, así que estaré muy agradecido por su ayuda.

Si quieres usar Mql DLL para llamar a Java, es más genial que las amígdalas vía gp :-)

pero si realmente quieres, puedes hacerlo. Pero además, hay que conocer C a un nivel suficiente y entender cómo se organizan los hilos dentro de MT, cómo y cuándo se crean/transforman.

hay muchos artículos sobre cómo ser amigo de Java y C/C++, la primera búsqueda en google da https://www.codeproject.com/Articles/993067/Calling-Java-from-Cplusplus-with-JNI.

ver artículos locales sobre cómo ser amigo de C/C++ y Mql

puedes una vez sentarte y hacer una capa Mql->(c/c++ dll)->Java. Parece muy maternal en términos de depuración (las emociones tienen que ser mantenidas a raya), pero una vez hecho entonces el uso.

PS/ y hay una sensación de que Mql va hacia Sharp, y no es para nada amigable con Java...así que en la versión 6 los esfuerzos serán desperdiciados

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:

No he dicho que conozca muy bien el java. Lo he instalado, he creado un proyecto y no sé qué hacer a continuación. Tengo que buscar ejemplos.

Sea realista, ¿puede manejar el protocolo entre el cliente y el servidor? Consigue una libu lista para el intercambio, de lo contrario te ahogarás.

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

Sí, la versión rusa.


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

¿Debemos ir paso a paso? :)

Bueno, si me ayudas.
 
Алексей Барбашин:

Por supuesto que sí. Espero no ser el único. Intenta responder más activamente a los mensajes.

ok
 

Fabricado por