WebSocket
的服務端和用戶端可以雙向進行通訊,並且允許跨網域通訊。由HTTP/1.1
的Upgrade
機制支持,透過ws
(非加密)或wss
(加密)協定進行通訊
WebSocket WebSocket( in DOMString url, in optional DOMString protocols ); WebSocket WebSocket( in DOMString url, in optional DOMString[] protocols );
#HTML5
只專注於客戶端的<a href="//m.sbmmt.com/js/js-weixinapp-api.html" target="_blank">API</a>
#, 而伺服器端是各個語言自己去實作
// 创建一个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() };
事件#onclose
onerror
onmessage
onopen
#readyState
: CONNECTING 0
OPEN 1
CLOSING 2
CLOSED 3
##binaryType:
String
Blob
Array<a href="//m.sbmmt.com/wiki/58.html" target="_blank">Buffer</a>
方法1 :如果客戶端不支援
WebSocket, 那麼可以使用幾個候選選項
Flash Socket
AJAX long-polling
AJAX multipart streaming
IFrame
JSON<a href="//m.sbmmt.com/wiki/1488.html" target="_blank">P polling</a>
方法2使用
Socket.io 來抹平差異,該庫可以在瀏覽器不支援
WebSocket的時候, 自動用瀏覽器支援的消息推送方式進行連接, 該庫還會檢測連接是否掉線,並在斷線時自動為你重新連線。
// 创建Socket.IO实例,建立连接 var socket= new io.Socket('localhost',{ port: 8080, }); socket.connect(); // 添加一个连接监听器 socket.on('connect',function(){ console.log('Client has connected to the server!'); }); // 添加一个连接监听器 socket.on('message',function(data){ console.log('Received a message from the server!',data); }); // 添加一个关闭连接的监听器 socket.on('disconnect',function(){ console.log('The client has disconnected!'); }); // 通过Socket发送一条消息到服务器 function sendMessageToServer(message){ socket.send(message); }
以上是什麼是 WebSocket?深入理解html5中WebSocket的詳細內容。更多資訊請關注PHP中文網其他相關文章!