ホームページ  >  記事  >  ウェブフロントエンド  >  WebSocketとは何ですか? html5 の WebSocket についての深い理解

WebSocketとは何ですか? html5 の WebSocket についての深い理解

零下一度
零下一度オリジナル
2017-05-08 13:46:082083ブラウズ

WebSocket とは何ですか? WebSocket のサーバーとクライアントは双方向に通信でき、クロスドメイン通信が可能です。 HTTP/1.1Upgrade メカニズムにより、ws (非暗号化) または wss (暗号化) 経由でサポートされます。 ) プロトコル通信

WebSocket WebSocket(
  in DOMString url,
  in optional DOMString protocols
);

WebSocket WebSocket(
  in DOMString url,
  in optional DOMString[] protocols
);

HTML5 の WebSocketWebSocket的服务端和客户端可以双向进行通讯,并且允许跨域通讯。由HTTP/1.1Upgrade机制支持,通过ws(非加密)或wss(加密)协议进行通讯

// 创建一个Socket实例
var socket = new WebSocket('ws://localhost:8080');
// 打开Socket 
socket.onopen = function(event){
  // 发送一个初始化消息
  socket.send('I am the client and I\'m listening!');
  // 监听消息
  socket.onmessage = function(event){
    console.log('Client received a message',event);
  };
  // 监听Socket的关闭
  socket.onclose = function(event){
    console.log('Client notified socket has closed',event);
  };
  // 关闭Socket.... 
  //socket.close()
};

HTML5 中的 WebSocket

HTML5只专注于客户端的<a href="http://www.php.cn/js/js-weixinapp-api.html" target="_blank">API</a>, 而服务器端是各个语言自己去实现

// 创建Socket.IO实例,建立连接
var socket= new io.Socket(&#39;localhost&#39;,{
  port: 8080,
});
socket.connect();
// 添加一个连接监听器
socket.on(&#39;connect&#39;,function(){
  console.log(&#39;Client has connected to the server!&#39;);
});
// 添加一个连接监听器
socket.on(&#39;message&#39;,function(data){
  console.log(&#39;Received a message from the server!&#39;,data);
});
// 添加一个关闭连接的监听器
socket.on(&#39;disconnect&#39;,function(){
  console.log(&#39;The client has disconnected!&#39;);
});
// 通过Socket发送一条消息到服务器
function sendMessageToServer(message){
  socket.send(message);
}

事件
onclose onerror onmessage onopen

属性

  • readyState: CONNECTING  0 OPEN  1 CLOSING 2 CLOSED  3

  • binaryType: String Blob <a href="http://www.php.cn/wiki/58.html" target="_blank">Array</a>Buffer

兼容性

方法1:
如果客户端不支持WebSocket, 那么可以使用几个候选选项 Flash Socket AJAX long-polling AJAX multipart streaming IFrame <a href="http://www.php.cn/wiki/1488.html" target="_blank">JSON</a>P polling

方法2
使用Socket.io来抹平差异,该库可以在浏览器不支持WebSocket

HTML5 のみに焦点を当てていますサーバー側の顧客 <a href="http://www.php.cn/js/js-weixinapp-api.html" target="_blank">API</a>

各言語には独自の実装
    rrreee
  • イベント

    があります。 >
    onclose onerror onmessage onopen
  • 属性
  • readyState: CONNECTING 0 オープン 1 CLOSING 2 CLOSED 3

binaryType: String Blob <code>配列<h3>バッファ</h3>
  • 互換性

  • 方法 1:
    クライアントが WebSocket をサポートしていない場合は、いくつかの代替手段があります Flash Socket AJAX ロングポーリング AJAX マルチパート ストリーミング IFrame <a href="http://www.php.cn/wiki/1488.html" target="_blank">JSON<li> P ポーリング code><p></p> <strong>方法 2</strong><br><code>Socket.io を使用して差異を平滑化します。このライブラリは、ブラウザが WebSocket 時に、ブラウザーでサポートされているメッセージ プッシュ メソッドを使用して自動的に接続します。また、ライブラリは接続が切断されたかどうかを検出し、切断された場合は自動的に再接続します。 rrreee
  • 利点

リアルタイム双方向通信

  • 優れたブラウザネイティブサポート(互換性はサードパーティライブラリで簡単に解決可能)

  • カスタムプロトコルをサポート

実用的なアプリケーション

チャット ルーム

サーバー メッセージ プッシュ

フロントエンドおよびバックエンドのリアルタイム システム

🎜🎜リファレンス🎜🎜🎜🎜 WebSocket | MDN🎜🎜🎜🎜 HTML5 WebS について知るロケット🎜🎜🎜 🎜【関連おすすめ】🎜🎜1. 無料のh5オンラインビデオチュートリアル🎜🎜🎜2. 🎜HTML5完全版マニュアル🎜🎜🎜3. 🎜php.cnオリジナルのhtml5ビデオチュートリアル🎜🎜

以上がWebSocketとは何ですか? html5 の WebSocket についての深い理解の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。