PHP程序员站--PHP编程开发平台
 当前位置:主页 >> 网页制作 >> HTML >> 

HTML5 WebSockets 基础使用教程

HTML5 WebSockets 基础使用教程

来源:互联网  作者:  发布时间:2010-08-10
HTML5之中一个很酷的新特性就是WebSockets,它可以让我们无需AJ

下面让我们继续完成connect()函数,我们将代码放入try/catch块,这样如果代码出现问题,我们能让用户知道。我们创建WebSocket,并将信息传递到message()函数,之后会做讲解。我们创建我们的onopen、onmessage和onclose函数。 需要注意的是我们为用户提供了端口状态,这并不是必需的,但我们把它放进来主要是为了方便调试。

CONNECTING = 0

OPEN = 1

CLOSED = 2

function connect(){  
    try{  
 
    var socket;  
    var host = "ws://localhost:8000/socket/server/startDaemon.php";  

    var socket = new WebSocket(host);  
 
        message('<p class="event">Socket Status: '+socket.readyState);  
 
        socket.onopen = function(){  
             message('<p class="event">Socket Status: '+socket.readyState+' (open)');  
        }  
 
        socket.onmessage = function(msg){  
             message('<p class="message">Received: '+msg.data);  
        }  
 
        socket.onclose = function(){  
             message('<p class="event">Socket Status: '+socket.readyState+' (Closed)');  
        }            
 
    } catch(exception){  
         message('<p>Error'+exception);  
    }  
}

message()函数很简单, 它将我们想展现给用户的文本填入chat log容器内。 我们在socket事件函数中为段落(<p>)标签创建适当的class,我们在message函数中只有一个段落结束标签。

function message(msg){  
    $('#chatLog').append(msg+'</p>');  
}

目前的成果

如果你已按上面教程按部就班的做的话,很好,我们已经创建了 HTML/CSS 模板、创建并建立Websocket连接、通过创建连接保持用户的进展更新。

HTML5-websocket

第七步:发送数据

现在我们已经有了提交按钮,但我们还需要监听用户按下键盘的事件,并运行send函数,下面的’13′便是回车键对应的ASCII码。

$('#text').keypress(function(event) {  
    if (event.keyCode == '13') {  


        send();  
    }  
});

下面是send()函数:

function send(){  
 
    var text = $('#text').val();  
    if(text==""){  

        message('<p class="warning">Please enter a message');  
        return ;  
    }  
    try{  
        socket.send(text);  
        message('<p class="event">Sent: '+text)  
    } catch(exception){  
    message('<p class="warning"> Error:' + exception);  
    }  
 
    $('#text').val("");  
 
}

下面我们需要:

socket.send();

那些额外的代码做了以下工作:检测用户是否什么都没输入却仍点击返回、清空input输入框、执行message()函数。

关闭Socket

关闭Socket操作相当简单,添加对断开连接按钮的click事件监听就可以。

$('#disconnect').click(function(){  
    socket.close();  
});

websocket-close

完整JavaScript代码

$(document).ready(function() {  
 
  if(!("WebSocket" in window)){  
  $('#chatLog, input, button, #examples').fadeOut("fast");  
  $('<p>Oh no, you need a browser that supports WebSockets. How about <a href="http://www.google.com/chrome">Google Chrome</a>?</p>').appendTo('#container');  
  }else{  
      //The user has WebSockets  


 
      connect();  
 
      function connect(){  
          var socket;  
          var host = "ws://localhost:8000/socket/server/startDaemon.php";  
 
          try{  
              var socket = new WebSocket(host);  
 
              message('<p class="event">Socket Status: '+socket.readyState);  
 
              socket.onopen = function(){  
                 message('<p class="event">Socket Status: '+socket.readyState+' (open)');  
              }  
 
              socket.onmessage = function(msg){  
                 message('<p class="message">Received: '+msg.data);  
              }  
 
              socket.onclose = function(){  
                message('<p class="event">Socket Status: '+socket.readyState+' (Closed)');  
              }          
 
          } catch(exception){  
             message('<p>Error'+exception);  

          }  
 
          function send(){  
              var text = $('#text').val();  
 
              if(text==""){  
                  message('<p class="warning">Please enter a message');  

                  return ;  
              }  
              try{  
                  socket.send(text);  
                  message('<p class="event">Sent: '+text)  
 
              } catch(exception){  

                 message('<p class="warning">');  
              }  
              $('#text').val("");  
          }  
 
          function message(msg){  
            $('#chatLog').append(msg+'</p>');  
          }  
 
          $('#text').keypress(function(event) {  
              if (event.keyCode == '13') {  
                send();  
              }  
          });    
 
          $('#disconnect').click(function(){  
             socket.close();  
          });  
 
      }//End connect  
 


  }//End else  
 
});

第九步:运行WebSocket服务器

我们要输入一些命令行,XAMPP提供了比较方便的shell选项。点击XAMPP控制面板的’shell’按钮并输入:

php -q path\to\server.php

现在你已经运行了WebSocket服务器!

HTML5-webSocket

大功告成!

当页面读取后,将尝试创建一个WebSocket连接,然后用户可以输入信息并从服务器接收信息。

html5-websocket-教程实例

感谢大家耐心阅读本教程,希望你能从中学到有用的知识,HTML5 WebSocket的确令人兴奋不已!大家可以通过The WebSocket API了解HTML5 WebSocket的最新动态。(点击这里下载源文件


延伸阅读:
HTML 4.01 与 HTML 5 之间的差异
HTML 5应用框架SproutCore初探
20个使用HTML5编写的网站
[视频]HTML5的魅力
各大浏览器CSS3和HTML5兼容速查表
基于 HTML5 的 Windows 画图程序
你从没见过的 HTML5 动画效果
Tags: HTML5   WebSockets  
最新文章
推荐阅读
月点击排行榜
PHP程序员站 Copyright © 2007-2010,PHPERZ.COM All Rights Reserved 粤ICP备07503606号