回答編集履歴

2

訂正

2023/06/09 07:39

投稿

退会済みユーザー
test CHANGED
@@ -62,4 +62,4 @@
62
62
 
63
63
  そして、function に含まれるコードで、引数 stock に受け取った JavaScript オブジェクトの内容で html 要素を書き換えます。結果、ブラウザ上の表示が最新情報で書き換えられます。
64
64
 
65
- サーバー側の BroadcastStockPrice メソッドは StockTicker.cs の StockTicker クラスで Timer を使って定期的に呼び出されるようになっています。具体的には、サンプルコードでは、250ms 毎に株価に変動があったかどうかをチェックし、変動があった場合は BroadcastStockPrice 呼び出して接続されているクライアントに情報をブロードキャストしています。
65
+ サーバー側の BroadcastStockPrice メソッドは StockTicker.cs の StockTicker クラスで Timer を使って定期的に呼び出されるようになっています。具体的には、サンプルコードでは、250ms 毎に株価に変動があったかどうかをチェックし、変動があった場合は BroadcastStockPrice 呼び出して接続されているクライアントに情報をブロードキャストしています。

1

追記

2023/06/09 07:37

投稿

退会済みユーザー
test CHANGED
@@ -23,3 +23,43 @@
23
23
  ASP.NET Core SignalR
24
24
  http://surferonwww.info/BlogEngine/post/2021/12/29/aspnet-core-signalr.aspx
25
25
 
26
+ ---
27
+
28
+ **【追記】**
29
+
30
+ 上に紹介した記事、
31
+
32
+ ASP.NET Core SignalR
33
+ http://surferonwww.info/BlogEngine/post/2021/12/29/aspnet-core-signalr.aspx
34
+
35
+ において「サーバー側から操作してクライアントにデータを送る」ところはどのようにしているのかを追記します。
36
+
37
+ 上の記事の「(5) クライアントスクリプト」のセクションの「サーバーからのリモートプロシージャコール」のところを見てください。
38
+
39
+ 以下のメソッドがありますが、これを呼び出すと情報をクライアントへ送信します。具体的には引数の Stock クラスの C# のオブジェクトを JSON にシリアライズしてクライアントに送信します。
40
+
41
+
42
+ ```C#
43
+ private void BroadcastStockPrice(Stock stock)
44
+ {
45
+ _hubContext.Clients.All
46
+ .SendAsync("UpdateStockPrice", stock);
47
+ }
48
+ ```
49
+
50
+ クライアントでは以下の JavaScript のメソッドが定義されています。上の BroadcastStockPrice メソッドの中の SendAsync メソッドの第 1 引数と、下の HubConnection.on メソッドの第 1 引数が同じであることに注目してください。
51
+
52
+
53
+ ```javascript
54
+ connection.on("UpdateStockPrice", function (stock) {
55
+ var displayStock = formatStock(stock);
56
+ var $row = $(rowTemplate.supplant(displayStock));
57
+ $stockTableBody.find('tr[data-symbol=' + stock.symbol + ']')
58
+ .replaceWith($row);
59
+ });
60
+ ```
61
+ この設定により、サーバー側で BroadcastStockPrice 呼び出されると、クライアント側で HubConnection.on メソッドの第 2 引数に設定されている function が起動され、引数の stock にサーバー側から送られてきた JSON 文字列が JavaScript オブジェクト(連想配列)にデシリアライズされて渡されます。
62
+
63
+ そして、function に含まれるコードで、引数 stock に受け取った JavaScript オブジェクトの内容で html 要素を書き換えます。結果、ブラウザ上の表示が最新情報で書き換えられます。
64
+
65
+ サーバー側の BroadcastStockPrice メソッドは StockTicker.cs の StockTicker クラスで Timer を使って定期的に呼び出されるようになっています。具体的には、サンプルコードでは、250ms 毎に株価に変動があったかどうかをチェックし、変動があった場合は BroadcastStockPrice 呼び出して接続されているクライアントに情報をブロードキャストしています。