Websocketはどのように? - ページ 4

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

フェドール、どこにいた?

実は、私はここに座っていて、困っているんです。

Usercontrolが表示されたウィンドウがポップアップしました。以上です。

 

こんな例を見つけました。

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で 実行してみる コードがC#の場合

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

ClientWebSocketは、すべてのWindowsバージョンでサポートされて いないため、これは動作しません。

私は実績のある方法を提示したが、あなたは自分の道を進み、自分の凸凹を出したいのだろう。それはあなたの権利です。

それなら、シャープにする必要はないでしょう。javaが得意な人は、それを使ってDLLを書くことができます。

ジャワが得意とは言っていない。インストールし、プロジェクトを 作成したが、次に何をすればいいのかわからない。例を探す必要がある。

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

Fedorさん、フォーラムで相談する目的は何でしょうか?すべてのプロジェクトがユニークであるため、誰も既成の例を教えてくれません。レンガだけは同じにできる。それこそが、彼らが提供するものなのです。

まずは簡単なものから。プログラミングの経験はありますか?少なくともmqlでは?プログラミングにおける「クラス」というものをご存知でしょうか。

はい、もちろんです。

 
Fedor Arkhipov:

みなさん、こんにちは。

huobiからwebsocket経由で相場を受信し、その相場を利用してオフラインチャートを構築するタスクがあります。

これは標準的な手段ではできないことだと実感しました。

javaでDLLを書き、それを使って見積書を受け取るというアイデアがあります。

そのような実装は可能なのでしょうか?

そういうのは初めてなので、よろしくお願いします!(笑)

Mql DLLでJavaを呼び出すなら、gp経由の扁桃腺よりカッコいい :-)

が、本当にやりたいのなら、やってもいい。しかし、それに加えて、C言語を十分なレベルで理解し、MT内部でスレッドがどのように配置され、いつどのように生成/変換されるかを理解している必要があります。

は、JavaやC/C++と友達になる方法についての記事がたくさんあります。最初のグーグル検索では、https://www.codeproject.com/Articles/993067/Calling-Java-from-Cplusplus-with-JNI。

C/C++やMqlと友達になる方法について、現地の記事を参照してください。

Mql->(c/c++ dll)->Java のレイヤーを作ることができます。それはデバッグの面で非常に母性的なようですが(感情はチェックで維持する必要があります)、一度行ってから使用します。

追記/あと、MqlはSharpに向かってる感があり、Javaと全く親和性がないので、バージョン6では努力が無駄になりそうです

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:

ジャワをよく知っているとは言っていない。インストールし、プロジェクトを作成したが、次に何をすればいいのかわからない。例を探す必要がある。

現実的に考えて、クライアント・サーバー間のプロトコルを扱えるのか?交換用のリブーを用意しろ、でないと溺れるぞ。

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

そう、ロシア版です。


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

一歩一歩進んでいきましょうか。:)

まあ、助けてくれたらね。
 
Алексей Барбашин:

もちろん、そうしますよ。私だけでないことを祈ります。ただ、もっと積極的にメッセージに反応するようにしましょう。

大丈夫
 

メイド・バイ