環境は.net6.0,C#
ビットコインのマーケット、BitBankのリアルタイムAPIで板情報(最新・差分)を取得したい。
が、私がよく使うJSON-RPCではなく、Soket.IOとのこと。
Soket.IO・・・。
どうすれば?
Google先生に聞いてみると、ふむふむ。SocketIoClientDotNetを使えばよいと。
SocketIoClientDotNetを調べてみる。
DotnetFrameworkだと・・・
よし、他のを探そう。
で、見つかったのは、Socket.Io.Client.Core
とりあえず、.NETStandard2.1って書いてあるから、大丈夫だろう。
NuGetで入れて、サンプルコードを書いてみたところ、無事に購読できました。
using Socket.Io.Client.Core;
using var client = new SocketIoClient();
client.Events.OnOpen.Subscribe((_) =>
{
Console.WriteLine("Socket has been opened");
});
var subscription = client.Events.OnPacket.Subscribe(packet =>
{
// とりあえず、ログを出しておく
Console.WriteLine($"{DateTime.Now:yyyy/MM/dd HH:mm:ss.fff} {packet.Data}");
});
await client.OpenAsync(new Uri("wss://stream.bitbank.cc"), null);
await Task.Delay(TimeSpan.FromSeconds(5));
client.Emit("join-room", "depth_diff_btc_jpy");
Console.ReadLine();
結果がstringで返ってくるとか、とくにパフォーマンス面で気になる点はあったりしますが、そこらのパフォーマンスの話は後日の課題ということで。