私はWebSocketサーバーをJavaとC++の両方に書き込もうとしていますが、今は固執しています。 javaとjava.net.ServerSocket/java.net.Socketを使用して接続を確立し、正常にハンドシェイクを行いましたが、WebSocketからJava Serverに送信されたデータは、私が期待したものではありません。呼び出されたWebSocketサーバーの作成
var count = 0;
function loop(){
websocket.send("loop: " + count + "\n");
count++;
setTimeout(loop, 100);
}
ラインは、すべてのwebsocket.sendのためにすべての今してではなく、フィードを使用してJavaサーバーが(これを受けて):
このようなジャバスクリプトからのメッセージを送信する場合。
?‡½÷「~Ñ~Mè‡×?‡AI3-¡C{に?‡OEI [UA¢4%¶íi?‡$ÍåøH¢SIO?‡・†ÞžÛé±î?|ê? ‡ '½Ø... KO・õ?í?‡DOU'
½'á^ OI?‡+ U?YG-A)Ùº?‡>?
Ë÷»¡AB 5?‡mÉŒQ|ã!Wéμ? :J FVの%のF6
JavaサーバははBufferedReader.readLineを使用してソケット()から値を取得し
BufferedReader socketReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line =socketReader.readLine();
これは、ハンドシェイクのために正常に動作し、すべてのハンドシェークデータが読み取り可能であるが、それは後に動作しません。握手は
ハンドシェイク後のデータは何とか暗号化されていますか?どのように私はそれを読むことができますか?
EDIT:
プログラムファイル:
SocketConnectTest.html
ServerTest.java
ClientSessionTest.java
ResponseGenerator.java
output
だけSを実行しますerverTest.javaを開き、SocketConnectTest.htmlを開きます。
ClientSessionTest.initClientListener()は、クライアントからのメッセージを処理します。
SOLUTION:解決のために は、データがウェブソケットに出くわすpimvdbsは以下の投稿を参照してHow to (de)construct data frames in WebSockets hybi 08+?
サーバーにtelnetを使用できますか?これによりプレーンテキストを入力し、何が送信されているかを確認することができます(HTTPサーバーでこれを行うこともできます) –
圧縮されている可能性があります。 'accept-encoding'ヘッダに' gzip'が含まれていますか?もしそうなら、それを取り出して、もう一度やり直してください。 – trojanfoe
@trojanfoe gzipを削除しようとしましたが、それを同一性に置き換えようとしました。どちらも役に立たなかった。 – Markus