DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> CSS入門知識 >> CSS詳解 >> HTML 5 Web Sockets應用初探(3)
HTML 5 Web Sockets應用初探(3)
編輯:CSS詳解     

第六步:JavaScript

首先我們將代碼放到jQuery 的 document.ready函數中,然後我們還要檢查用戶的浏覽器是否支持Web Socket。如果不支持,我們就添加一個鏈向Chrome浏覽器頁面的鏈接。

  1. $(document).ready(function() {
  2. if(!("Web Socket" in window)){
  3. $('#chatLog, input, button, #examples').fadeOut("fast");
  4. $('<p>Oh no, you need a browser that supports Web Sockets. How about <a href="http://www.google.com/Chrome">Google Chrome</a>?</p>').appendTo('#container');
  5. }else{
  6. //The user has Web Sockets
  7. connect();
  8. function connect(){
  9. //the connect function code is below
  10. }
  11. });

如你所見,如果用戶浏覽器支持Web Socket,我們將執行connect()函數。這裡是核心功能,我們將開始創建open、close和receive事件。我們將在我們的服務器定義URL。

  1. var socket;
  2. var host = "ws://localhost:8000/socket/server/startDaemon.PHP";

你可能會發現URL中怎麼沒有http?恩,是的,這是一個Web Socket URL,使用了不同的協議。下面是URL分解圖示:

URL分解圖示

下面讓我們繼續完成connect()函數,我們將代碼放入try/catch塊,這樣如果代碼出現問題,我們能讓用戶知道。我們創建Web Socket,並將信息傳遞到message()函數,之後會做講解。我們創建我們的onopen、onmessage和onclose函數. 需要注意的是我們為用戶提供了端口狀態,這並不是必需的,但我們把它放進來主要是為了方便調試。

  1. CONNECTING = 0
  2. OPEN = 1
  3. CLOSED = 2
  4. function connect(){
  5. try{
  6. var socket;
  7. var host = "ws://localhost:8000/socket/server/startDaemon.PHP";
  8. var socket = new Web Socket(host);
  9. message('<p class="event">Socket Status: '+socket.readyState);
  10. socket.onopen = function(){
  11. message('<p class="event">Socket Status: '+socket.readyState+' (open)');
  12. }
  13. socket.onmessage = function(msg){
  14. message('<p class="message">Received: '+msg.data);
  15. }
  16. socket.onclose = function(){
  17. message('<p class="event">Socket Status: '+socket.readyState+' (Closed)');
  18. }
  19. } catch(exception){
  20. message('<p>Error'+exception);
  21. }
  22. }

message()函數很簡單, 它將我們想展現給用戶的文本填入chat log容器內。 我們在socket事件函數中為段落(<p>)標簽創建適當的class,我們在message函數中只有一個段落結束標簽。

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

目前的成果

如果你已按上面教程按部就班的做的話,很好,我們已經創建了Html/CSS模板、創建並建立Web Socket連接、通過創建連接保持用戶的進展更新。

目前的成果

第七步:發送數據

現在我們已經有了提交按鈕,但我們還需要監聽用戶按下鍵盤的事件,並運行send函數,下面的’13′便是回車鍵對應的ASCII碼。

  1. $('#text').keypress(function(event) {
  2. if (event.keyCode == '13') {
  3. send();
  4. }
  5. });

下面是send()函數:

  1. function send(){
  2. var text = $('#text').val();
  3. if(text==""){
  4. message('<p class="warning">Please enter a message');
  5. return ;
  6. }
  7. try{
  8. socket.send(text);
  9. message('<p class="event">Sent: '+text)
  10. } catch(exception){
  11. message('<p class="warning"> Error:' + exception);
  12. }
  13. $('#text').val("");

下面我們需要:

  1. socket.send();

那些額外的代碼做了以下工作:檢測用戶是否什麼都沒輸入卻仍點擊返回、清空input輸入框、執行message()函數。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved