はい、WebSocketは双方向です。重要な結果は、サーバーからクライアントにデータを効率的にプッシュできることです。
基になるソケットは開いたままになります(または、開いたままにできない場合は、必要に応じて再度開きます)。HTTP 1.1はまだそれを行っていることに注意してください:
HTTP / 1.1は、元のHTTP(HTTP / 1.0)のリビジョンです。HTTP / 1.0では、リソース要求ごとに同じサーバーへの個別の接続が確立されます。HTTP / 1.1は、ページが配信された後、接続を複数回再利用して、画像、スクリプト、スタイルシートなどをダウンロードできます。したがって、TCP接続の確立にはかなりのオーバーヘッドが発生するため、HTTP/1.1通信の遅延は少なくなります。
クライアント側とサーバー側の両方で処理する必要があります。もちろん、これは両方のソフトウェアが更新されることを意味します(古いブラウザーと古いサーバーはWebSocketを処理できません)。
編集(コメントの交換後):
クライアント側、接続を初期化する方法は次のとおりです。
var ws = new WebSocket('ws://'+document.location.host+'/ws');
ws.onopen = function() {
// do something
};
ws.onerror = function() {
// do something
};
ws.onclose = function() {
// do something
};
ws.onmessage = function(msgevent) {
var msg = JSON.parse(msgevent.data);
// handle incoming message
};
ws変数を保持し、その後、と同じ接続を使用してクライアントからサーバーにプッシュできます。
ws.send(window.JSON.stringify(msg)); // msg is a basic js object