ConoHa で WebSocket 接続を試みるも 502 エラーが出現

またまたMacbook が欲しいために「ConoHa」の API に関する記事を公開します。

タイトルにもありますが、今回は上手くいかなかった例を紹介します。
どなたか詳しい方がいらっしゃれば、アドバイスをいただけると嬉しいです。

挑戦したいこと

先日更新した記事で、ConoHa には noVNC コンソールと HTTP のシリアルコンソールがあると紹介しました。

API ドキュメントにはあるものの紹介していないコンソールがありました。

WebSocket については Wikipedia にもありますが、サーバーとクライアントを常時接続するようなプロトコルで、プロキシサーバーが必要な環境でも接続できるのが特徴です。

WebSocket 接続用 URL の取得

前回紹介した PowerShell のスクリプトの

{"os-getVNCConsole":{"type": "novnc"}}

{"os-getSerialConsole":{"type": "serial"}}

に書き換えるだけです。

$apiUser = "APIユーザー名"
$apiPassword = "APIパスワード"
$tenantId = "テナントID"
$identityServiceUrl = "https://identity.tyo1.conoha.io/v2.0"
$computeService = "https://compute.tyo1.conoha.io/v2"
$uuid = "VPS設定-UUID"
# 有効な期間のトークンがあれば
$token = "" 

# トークンの取得
function getToken([string] $tenantId, [string] $apiUser, [string] $apiPassword, [string] $authurl){
    $body = '{"auth":{"passwordCredentials":{"username":"' + $apiUser + '","password":"'+$apiPassword+'"},"tenantId":"'+$tenantId+'"}}'
    $url = $identityServiceUrl+"/tokens"
    $result = Invoke-RestMethod $url -Method POST -Body $body
    return $result
}

# コンソールの URL 取得
function getWebSocketConsole([string] $tenantId, [string] $uuid, [Hashtable] $tokenHeader, [string] $computeService){
    $body = '{"os-getSerialConsole":{"type": "serial"}}'
    $url = $computeService + "/" + $tenantId + "/servers/" + $uuid + "/action"
    $result = Invoke-RestMethod $url -Method POST -Body $body -Headers $tokenHeader
    return $result.console.url
}

# 処理
if ($token -eq "") {
    $mytokens = getToken $tenantId $apiUser $apiPassword $identityServiceUrl
    $token = $mytokens.access.token
}
$tokenHeader = @{"X-Auth-Token" = $token}
$url = getWebSocketConsole $tenantId $uuid $tokenHeader $computeService
# URL 表示
Write-Output $url

成功するとこのような wss で始まる WebSocket の URL が得られます。

wss://console.tyo1.conoha.io/?token=○○

WebSocket クライアントからの接続

とりあえず WebSocket の接続サンプルを使うことにしました。

JavaScript

WebSocket の公式サイトにテストがあったので試してみました。

WebSocket の URL を入力して接続しても、ERROR:undefined と表示されてしまいました。
Creating your own test を自分で書き換えても同様のエラーが発生しました。

テストサーバーである、
ws://echo.websocket.org/
wss://echo.websocket.org/
は問題なく接続できるので、回線が WebSocket を制限しているわけでもなさそうです。

ブラウザの開発者ツールで確認してみると、502 Bad Gateway エラーが発生しているようです。

[H27.07.17]ConoHa WebSocket 502

C#

こちらのブログを参考に、C# での確認も行いました。

こちらも、ws://echo.websocket.org/ や wss://echo.websocket.org/ は問題なく接続できました。
違うネットワークから接続してもだめでした。

サポートに問い合わせてみた

困ったので、ConoHa のサポートに問い合わせてみました。

回答は「APIで接続用URL取得後の動作については案内が困難」とのことでした。
クライアントの問題や利用者の回線の問題も考えられるため、そこまではサポートできないというのも納得できます。

今回は、こうしてブログに書くことによって、誰かの参考になればと思います。

おわりに

現在友達の紹介キャンペーンを実施しており、こちらのリンクから ConoHa に登録していただくと、1000円分のクーポンがもらえますので是非登録し、試してみてください。

SKYSEA 環境で Chrome 43 更新後ユーザー設定ファイルを読み込むことができない

Google Chrome 43 に更新すると、一部の環境でエラーが発生するようです。

ユーザー設定ファイルを読み込むことができません。一部の機能が利用できない可能性があります。また、設定への変更は保存されません。

このような投稿は Google Chrome ヘルプ フォーラムでもいくつか投稿されており、Twitter でもそのようなツイートを見かけました。

原因は上記のフォーラムでも書いていますが、「SKYSEA Client View」との相性が悪いようです。

この件については、SKYSEA Client View 保守契約ユーザー用のWebサイトに

2015/05/21【Ver.10.000.10k / 10.100.09d】Windows版 Google ChromeをVer.43にアップデートすると、Chromeの起動時にエラーが発生するようになる問題

と書かれており、SKYSEA Client Viewを更新すると問題は直るようです
SKYSEAを利用していないですし、保守契約も結んでいないため詳しくはSKYSEAのページをご確認ください。


(2015/6/5追記)

また、SKYSEA にはシークレットウインドウを制限する機能があります。
これを有効にしていると、シークレットウインドウが表示されないのですが、これはバグではありませんので設定を一度確認してみてください。


以下、この記事とは関係ない独り言です。

最近、JRの車内広告でSKYSEAを見かけるという意識はありましたが、どのようなソフトかまでは意識していませんでした。
まさか、Chromeとの相性問題で知ることになるとは思っていませんでした。

SKYSEAの開発元であるSKY株式会社は、学生だとSKYMENUの会社というと分かりやすいかもしれません。
JSkyB(スカパーのスカの部分)の会社とは一切関係ないようです。

MSI製マザーボード Haswell Refresh で再起動ができない問題 解決法

自分のパソコンではないのですが、最近自作したパソコンが「電源OFFからの起動はできるが再起動できない」という問題があったので調べてみました。

状況の確認

ハードウェア

“MSI製マザーボード Haswell Refresh で再起動ができない問題 解決法” の続きを読む

Avast 2015のKB3000850エラー Windows 8.1 編

現在自宅で利用しているPCは、デスクトップとノートの2台あり、どちらもWindows 8.1をインストールしています。

自動更新の設定にしているのですが、オプションの更新プログラムは自動で更新されないため、昨日たまたま見つけたKB3000850を2台ともインストールしてみました。

その後から、2台とも電源がシャットダウンも再起動もできない状態になってしまいました。
シャットダウンしています… や 再起動しています… のままずっと動かず。
電源ボタン長押しも、デスクトップはリセットボタンもありますが、あまり使いたくないところ。困りました。

原因

調べてみたら、Avast 2015 SP1 (10.0.2208)をインストールした Windows 8.1 にKB3000850をインストールすると問題が発生するようです。 “Avast 2015のKB3000850エラー Windows 8.1 編” の続きを読む

Silverlightを使用したサイトで「アクセスが拒否されました」と表示される

Windows 8.1のPCでInternet ExplorerでSilverlightを用いた動画サービスの動画を再生しようとしたところ、このようなエラーメッセージが表示されて再生できませんでした。

[H26.11.13]Silverlight アクセスが拒否されました

アクセスが拒否されました
使用しようとしている機能は、お使いのブラウザーで許可されていません。
ブラウザーのセキュリティ機能について詳しくは、ここをクリックしてください。

今回はRAKUTEN SHOWTIMEで表示されたのですが、他のSilverlightの動画サービスもエラーが発生しました。
先日、SSL 3.0が危険ということで無効化したことを思い出し、ここはSSL 3.0をまだ使ってるのかなと思い有効にしてみましたが、まだ表示されず。
Silverlightの再インストールも行いましたが、まだ問題は継続中でした。

“Silverlightを使用したサイトで「アクセスが拒否されました」と表示される” の続きを読む