2016-11-08 14 views
0

サーバーからクライアントにカスタムWebソケットフレームを送信しています。私はシームレスにハンドシェイクを得ることができましたが、通常のテキストフレームを送信すると、問題が発生します(クライアント側のメッセージは受信されません)。これは私が送るものです:WebSocketサーバー:クライアントにテキストフレームを送信する

​​

データが正しく送信されます(ハンドシェイクが有効で、jjの値が6です)。私はここに見つけた説明に私のコードを基づいてHow can I send and receive WebSocket messages on the server side?を見つけました。

私のクライアントは非常にシンプルで、私はちょうど完了を投稿しています:握手が働いており、通常のテキストは」doesnの理由を私はクライアントから取得したウェブソケットのバージョンが13

任意のアイデアです

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <title>Web Socket Example</title> 
    <meta charset="UTF-8"> 
    <script type="text/javascript"> 

     var webSocket = new WebSocket("ws://localhost:48884/", "sample"); 
     webSocket.binaryType = "arraybuffer"; 
     webSocket.onopen = function(e) { alert("opened"); } 
     webSocket.onclose = function(e) { alert("closed"); } 
     webSocket.onerror = function(e) { alert("error"); } 
     webSocket.onmessage = function(e) { alert("got: " + e.data); } 

    </script> 
    </head> 
    <body> 
     <div id="holder" style="width:600px; height:300px"></div> 
    </body> 
</html> 

t?

+0

を送信するサーバ・ツー・ブラウザのメッセージ:私はそれが私は、プロトコルを指定する必要がChromeで動作させるためにそれを見つけましたどの言語をサーバーに使用していますか?どの言語で答えが期待されますか?ハンドシェークがどのように働いていたのですか?これまでに何を試しましたか? – Myst

+0

クライアントを実行したときに警告(「開かれた」)が得られたので、ハンドシェイクがうまくいってほしい。 私はC++を使っていますが、それは無関係です。 – maxest

+0

フォローアップ。私はInternet Explorer(これまで使用されていたFirefox)でこれをチェックしました。私はIEで開くが、すぐにエラー(未定義)に行き、閉じます。 – maxest

答えて

0

問題を修正しました。これは、ハンドシェイクの最後に追加の\ r \ nが必要であることが判明したために動作します(https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers)。だから、私の握手は正しくなかったが、何とかFirefoxがそれを受け入れた(しかしメッセージを受け入れなかった)。私はこのフォーマットに遵守し、それはすべてのFirefoxとIEでうまく働いたが、Chromeでなかった

HTTP/1.1 101 Switching Protocols 
Upgrade: websocket 
Connection: Upgrade 
Sec-WebSocket-Accept: key 
empty line 

とにかく、私は上記の投稿のリンクは握手フォーマットがあるべきと述べています。上記のハンドシェイク形式は、私はハンドシェークだ

HTTP/1.1 101 Switching Protocols 
Upgrade: websocket 
Connection: Upgrade 
Sec-WebSocket-Accept: key 
Sec-WebSocket-Protocol: my_protocol_name 
empty line 

とFirefox、IEとChromeに取り組ん

関連する問題