web-dev-qa-db-ja.com

HTML5 WebSocketへの接続

HTML5 WebSocketについて少し混乱しています。私はそこにある数多くのチュートリアルを見てきましたが、それらの多くには、異なるポートを使用して接続するさまざまなバリエーションがあります。これらのポートはどういう意味ですか?

Adobe たとえば、これを使用します:

new WebSocket('ws://localhost:1740');

次に、別の tutorial に、ポートが不要な場合にこのようになります。

new WebSocket("ws://www.websockets.org");

そして最後に、3番目のチュートリアルにはポートがありますが、それは完全に異なります。

new WebSocket("ws://localhost:8080/echo");

私の質問は、なぜこれらが異なるのですか?接続するポートを知るにはどうすればよいですか?また、私は自分の接続を試みました:

var ws = new WebSocket("ws://test.ontarget-network.com/");

しかし、次のエラーが発生します:Unexpected response code: 200

私は周りをテストし、他のさまざまな「ポート」に接続しようとしました(私が何をしているのかわからず、乱数を入力しています)。このエラーは消えますが、私のコード

ws.onopen = function(){
   alert("Connection Established");
};

実行されません。

HTML5のWebsockets APIを完全に理解して、より動的なアプリケーションを実験して作成できるようにしています。助けてくれてありがとう。

13
Majo0od

以下は 最新のWebSocketドラフト からのものです。

デフォルトでは、WebSocketプロトコルは通常のWebSocket接続にポート80を使用し、TLS [RFC2818]を介してトンネリングされたWebSocket接続にポート443を使用します。

実際には、使用されていない有効なポートを使用できるはずです。クライアントがサーバー側スクリプトがソケット接続用に開くポートと同じポートに接続しようとしている限り、問題はありません。

ポートに関する簡単なメモ:
-ポート80はHTTPポートです。
-ポート8080は代替HTTPポートです。
-ポート443はHTTPS(つまり、TLSを使用したHTTP)ポートです。
-Adobeコードのポート1740は、他のサービスでまだ使用されていないランダムなポートのようです。

プリセットポートの完全なリストについては、以下を参照してください。
http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers

「予期しない応答コード:200」エラーについては、クライアント側で使用しているWebSocket URLが有効なサーバー側スクリプトを指していないと思いますが、それ以上の情報がないとコメントするのは困難です。

12
HartleySan

サーバーには、WebSocket接続を受け入れるエンドポイントが必要です。したがって、そのエンドポイントが/echo接続先:

ws://localhost:8080/echo/websocket

Unexpected response code: 200除外するとエラー/websocketエンドポイントの後のサフィックス。私も同じように混乱していました このリンク は私にとって少し問題を解決しました。

12
hartz89

私も同じ問題を抱えていましたが、

Unexpected response code: 200

Webソケットを処理するには、サーバー側のスクリプトが必要です。またはNode.jsを使用してサーバースクリプトを作成できます。教育のために、独自のWebSocketサーバースクリプトを作成することができます。

0
Manee.O.H