JavaScriptWebSocketとVisualBasic.Netで記述されたTCPサーバー/クライアントアプリケーション間の接続を取得しようとしています。私の問題は、ハンドシェイクが失敗することです。ローカルWebサイトからハンドシェイク要求を受け取りましたが、応答を受け入れません。
JavaScriptファイルのコード:
<script type="text/javascript">
var ws;
function connect() {
if("WebSocket" in window) {
debugger;
ws = new WebSocket("ws://192.168.193.178:1925");
ws.onopen = function() {
alert("Connection established");
};
ws.onmessage = function(evt) {
var received_msg = evt.data;
alert("Message is received: " + received_msg);
};
ws.onerror = function(evt) {
alert("Error");
var received_msg = evt.data;
alert("Error: " + received_msg);
};
ws.onclose = function() {
// websocket is closed.
alert("Connection closed");
};
//ws.send("Test");
//ws.close();
} else {
alert("WebSocket NOT supported by your Browser!");
}
}
function disconnect() {
ws.close();
}
function send(message) {
ws.send(message);
alert("Sent: " + message);
}
</script>
VB.Netコード出力:
Received:
GET / HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Host: 192.168.193.178:1925
Origin: http://127.0.0.1:8020
Sec-WebSocket-Key: eGzO0afUD5jCeUdzdoxwjw==
Sec-WebSocket-Version: 13
Sent:
HTTP/1.1 101 Web Socket Protocol Handshake\r\n
Upgrade: WebSocket\r\n
Connection: Upgrade\r\n
Sec-WebSocket-Origin: null\r\n
Sec-WebSocket-Accept: NzU3M2IwYzk0ZWFmYjg4MzMyZWI1ODhhZWI4NWUyZDE1YWU2YzhlNA==\r\n
\r\n
WebSocketにハンドシェイクを受け入れさせることができません。誰かが私を助けてくれることを願っています。たぶん、ハッシュ生成にエラーが含まれていますか?
編集:
正しいSec-WebSocket-Accept文字列(dXOwyU6vuIMy61iK64Xi0VrmyOQ =)を取得しましたが、とにかくWebSocketはハンドシェイク応答を処理していないようです。Chromeデベロッパーツールを使用してデバッグしようとしましたが、有用な情報が得られません。任意のヒント?