HTML5 - WebSockets

WebSockets是Web应用程序的下一代双向通信技术,可在单个套接字上运行,并通过HTML 5兼容浏览器中的JavaScript接口公开.

获得Web后与Web服务器的套接字连接,您可以通过调用 send()方法将数据从浏览器发送到服务器,并通过 onmessage 事件处理程序从服务器接收数据到浏览器.

以下是创建新WebSocket对象的API.

var Socket = new WebSocket(url, [protocal] );

这里的第一个参数url指定要连接的URL.第二个属性protocol是可选的,如果存在,则指定服务器必须支持的子协议才能使连接成功.

WebSocket属性

以下是WebSocket对象的属性.假设我们创建了如上所述的Socket对象 :

Sr.No. 属性&描述
1

Socket.readyState

readonly属性readyState表示连接的状态.它可以具有以下值 :

  • 值为0表示尚未建立连接.

  • 值为1表示建立了连接并且可以进行通信.

  • 值为2表示连接正在通过结束握手.

  • 值为3表示连接已关闭或无法打开.

2

Socket.bufferedAmount

readonly属性bufferedAmount表示使用send()方法排队的UTF-8文本的字节数.

WebSocket事件

以下是与WebSocket对象关联的事件.假设我们创建了如上所述的Socket对象 :

Event 事件处理程序 描述
open Socket.onopen 建立套接字连接时会发生此事件.
message Socket.onmessage 当客户端收到数据时会发生此事件来自服务器.
error Socket.onerror 当通讯中有任何错误时会发生此事件.
close Socket.onclose 连接关闭时会发生此事件.

WebSocket方法

以下是与WebSocket对象关联的方法.假设我们创建了如上所述的Socket对象 :

Sr.No. Method&描述
1

Socket.send()

send(data)方法使用连接传输数据.

2

Socket.close()

close()方法将用于终止任何现有连接.

WebSocket示例

WebSocket是客户端和服务器之间的标准双向TCP套接字.套接字以HTTP连接开始,然后在HTTP握手后"升级"到TCP套接字.握手后,任何一方都可以发送数据.

客户端HTML& JavaScript代码

在编写本教程时,只有少数Web浏览器支持WebSocket()接口.您可以尝试使用最新版Chrome,Mozilla,Opera和Safari的示例.

<!DOCTYPE HTML>

<html>
   <head>
      
      <script type = "text/javascript">
         function WebSocketTest() {
            
            if ("WebSocket" in window) {
               alert("WebSocket is supported by your Browser!");
               
               // Let us open a web socket
               var ws = new WebSocket("ws://localhost:9998/echo");
				
               ws.onopen = function() {
                  
                  // Web Socket is connected, send data using send()
                  ws.send("Message to send");
                  alert("Message is sent...");
               };
				
               ws.onmessage = function (evt) { 
                  var received_msg = evt.data;
                  alert("Message is received...");
               };
				
               ws.onclose = function() { 
                  
                  // websocket is closed.
                  alert("Connection is closed..."); 
               };
            } else {
              
               // The browser doesn't support WebSocket
               alert("WebSocket NOT supported by your Browser!");
            }
         }
      </script>
		
   </head>
   
   <body>
      <div id = "sse">
         <a href = "javascript:WebSocketTest()">Run WebSocket</a>
      </div>
      
   </body>
</html>

安装pywebsocket

在测试上述客户端程序之前,需要一台支持WebSocket的服务器.从 pywebsocket 下载mod_pywebsocket-xxxtar.gz,旨在提供一个Web Apache HTTP Server的套接字扩展,并按照以下步骤安装它.

  • 解压缩并解压缩下载的文件.

  • 进入 pywebsocket-xxx/src/目录.

  • $ python setup.py build

  • $ sudo python setup.py install

  • 然后阅读文件by :

    • $ pydoc mod_pywebsocket

这将把它安装到你的python环境中.

启动服务器

转到 pywebsocket-xxx/src/mod_pywebsocket 文件夹并运行以下命令 :

$sudo python standalone.py -p 9998 -w ../example/

这将启动服务器侦听端口9998并使用我们的echo_wsh.py所在的-w选项指定的处理程序目录.

现在使用Chrome浏览器打开您在开头创建的html文件.如果您的浏览器支持WebSocket(),那么您将获得警报,指示您的浏览器支持WebSocket,最后当您单击"运行WebSocket"时,您将收到服务器脚本发送的Goodbye消息.

本文链接:https://www.f2er.com/3188908.html