前提・実現したいこと
C#でGMO CoinのPublic Websocket API のorderbooksを動作させてみたい。
https://api.coin.z.com/docs/?csharp#ws-orderbooks
発生している問題・エラーメッセージ
サンプルソースを動作させたところ、応答データのresultが1024文字で見切れる。応答データを見切れずに取得したい。 応答例: {"channel":"orderbooks","asks":[{"price":"1132560","size":"5.03"},{"price":"1132590","size":"5.59"},{"price":"1132600","size":"5"},{"price":"1132640","size":"0.08"},{"price":"1132720","size":"0.04"},{"price":"1132750","size":"0.1"},{"price":"1132770","size":"0.01"},{"price":"1132790","size":"0.05"},{"price":"1132847","size":"0.02"},{"price":"1132900","size":"0.01"},{"price":"1132965","size":"0.38"},{"price":"1133000","size":"5.21"},{"price":"1133130","size":"1"},{"price":"1133140","size":"0.12"},{"price":"1133207","size":"0.21"},{"price":"1133221","size":"0.3"},{"price":"1133225","size":"0.1"},{"price":"1133235","size":"0.1"},{"price":"1133320","size":"0.04"},{"price":"1133350","size":"1.06"},{"price":"1133400","size":"5"},{"price":"1133499","size":"0.01"},{"price":"1133500","size":"0.21"},{"price":"1133551","size":"0.2"},{"price":"1133564","size":"0.25"},{"price":"1133610","size":"2"},{"price":"1133632","size":"0.01"},{"price":"1133640","size":"4.3"},{"price":"1133667","size":"0.06"},{"price":"1133700","size
該当のソースコード
C#
1 2Request example: 3 4using System; 5using System.Net.WebSockets; 6using System.Text; 7using System.Threading; 8using System.Threading.Tasks; 9 10class Example 11{ 12 public static void Main(string[] args) 13 { 14 var task = Orderbooks(); 15 task.Wait(); 16 } 17 18 static async Task Orderbooks() 19 { 20 const string endpoint = "wss://api.coin.z.com/ws/public/v1"; 21 const string message = "{ \"command\" : \"subscribe\", \"channel\": \"orderbooks\", \"symbol\": \"BTC\" }"; 22 using (var client = new ClientWebSocket()) 23 { 24 await client.ConnectAsync(new Uri(endpoint), CancellationToken.None); 25 26 var messageBytes = Encoding.UTF8.GetBytes(message); 27 await client.SendAsync(new ArraySegment<byte>(messageBytes), WebSocketMessageType.Text, true, 28 CancellationToken.None); 29 30 while (client.State == WebSocketState.Open) 31 { 32 var incomingData = new byte[1024]; 33 var result = await client.ReceiveAsync(new ArraySegment<byte>(incomingData), CancellationToken.None); 34 Console.WriteLine(Encoding.UTF8.GetString(incomingData, 0, result.Count)); 35 } 36 } 37 } 38}
試したこと
var incomingData = new byte[1024];→var incomingData = new byte[2056];に変更したところ、2056文字の応答になりましたがデータは見切れてました。そのため、[10240]に変更したら、1024文字の応答で、データは見切れたままです。
補足情報(FW/ツールのバージョンなど)
Microsoft Visual Studio Professional 2017
Version 15.9.17
VisualStudio.15.Release/15.9.17+28307.905
Microsoft .NET Framework
Version 4.8.03761
インストールされているバージョン:Professional
C# ツール 2.10.0-beta2-63501-03+b9fb1610c87cccc8ceb74a770dba261a58e39c4a
C# コンポーネントが IDE で使用されました。プロジェクト タイプと設定に応じて、異なるバージョンのコンパイラを使用できます。
Common Azure Tools 1.10
Provides common services for use by Azure Mobile Services and Microsoft Azure Tools.
NuGet パッケージ マネージャー 4.6.0
Visual Studio 内の NuGet パッケージ マネージャー。NuGet の詳細については、http://docs.nuget.org/ にアクセスしてください。
ProjectServicesPackage Extension 1.0
ProjectServicesPackage Visual Studio Extension Detailed Info
ResourcePackage 拡張機能 1.0
Visual Studio の拡張機能 ResourcePackage に関する詳細情報
ResourcePackage 拡張機能 1.0
Visual Studio の拡張機能 ResourcePackage に関する詳細情報
Visual Basic ツール 2.10.0-beta2-63501-03+b9fb1610c87cccc8ceb74a770dba261a58e39c4a
Visual Basic コンポーネントが IDE で使用されました。プロジェクト タイプと設定に応じて、異なるバージョンのコンパイラを使用できます。
Visual Studio Code デバッグ アダプターのホスト パッケージ 1.0
Visual Studio Code デバッグ アダプターを Visual Studio でホストするための相互運用レイヤー
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/12 12:23