首頁 > web前端 > H5教程 > 主體

什麼是 WebSocket?深入理解html5中WebSocket

零下一度
發布: 2017-05-08 13:46:08
原創
2119 人瀏覽過

什麼是 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 中的WebSocket

#HTML5只專注於客戶端的<a href="http://www.php.cn/js/js-weixinapp-api.html" target="_blank">API</a>#, 而伺服器端是各個語言自己去實作

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

事件
#onclose onerror onmessage onopen

屬性

  • #readyState: CONNECTING  0 OPEN  1 CLOSING 2 CLOSED  3

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

#相容性

方法1 :如果客戶端不支援
WebSocket, 那麼可以使用幾個候選選項Flash Socket AJAX long-polling AJAX multipart streaming IFrame JSON<a href="http://www.php.cn/wiki/1488.html" target="_blank">P polling</a>

方法2使用
Socket.io 來抹平差異,該庫可以在瀏覽器不支援WebSocket的時候, 自動用瀏覽器支援的消息推送方式進行連接, 該庫還會檢測連接是否掉線,並在斷線時自動為你重新連線。

// 创建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);
}
登入後複製
優勢

  • 即時雙向通訊

  • #瀏覽器本地支援良好(相容性可以用第三方函式庫很好解決)

  • 支援自訂協定

#實際應用

  • 聊天室

  • 伺服器訊息推送

  • 前後端即時系統

參考

  • Websocket | MDN

  • 認識HTML5的WebSocket

【相關推薦】

1. 

免費h5線上影片教學

2.

 HTML5 完整版手冊

3. 

php.cn原始html5影片教學

############################################

以上是什麼是 WebSocket?深入理解html5中WebSocket的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!