0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

JMeterでAzure SignalR Serviceとの接続を確立する方法

Posted at

注意点

  • pingと称して、JMeter側からたまに特定の文字列をSignalRで送信しないと通信が切断される。
  • pingと称して、頻繁にSignalRからテキストフレーム通信が送信されてくるので、WebSocket Text Frame Filterでフレームを破棄する設定をいれておかないと、意図しない通信に反応してしまう。
  • Azure SignalR Service特有なのかは分からないが、通信を確立するまでにプロトコルが存在する。
    次の稿でそのプロトコルを記載する。

プロトコル

  1. Webscoket Samplers by Peter Doornboschプラグインをインストールする
  2. Azure FunctionsでNegotiate関数を作っている場合、Http SamplerでPOST呼び出しする
    HTTP Header Mangerで以下を指定する。(この部分はまだ設定過不足の余地あり)
     x-signalr-user-agent: JMeter
     x-ms-signalr-userid: 通信を共有したいユーザーID名
    ポストプロセッサーのJSON ExtractorでレスポンスのurlとaccessTokenを取得する
  3. urlに対して、Http SamplerでPOST呼び出しする
    HTTP Header Managerで以下のペアを登録する。
     authorization: 1で取得したaccessToken
     x-ms-signalr-userid: 1で指定したx-ms-signalr-useridと同じユーザーID
     x-signalr-user-agent: JMeter
    JSON ExtractorでconnectionIdを取得する
  4. プラグインのWebSocket Open Connectionサンプラーでurlのドメインに対してwssで呼び出しを行う
    HTTP Header Managerで以下のペアを登録する
     Connection:Upgrade
     Upgrade:websocket
     Accept-Encoding:gzip,default,br
     User-Angent:JMeter
  5. プラグインのWebSocket Single Write SamplerでText Frameで「{"protocol":"json","version":1}」という書き込みを行う
  6. プラグインのWebSocket Single Read SamplerでSignalRからの通信を待つ
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?