2012-05-30 36 views
0

我使用socket.io和express 3來構建應用程序。socket.io啓動並完成事件

我想設置加載器動畫,以便在收到消息時顯示,並在收到消息時將其隱藏。 就像jQuerys .ajaxStart.ajaxComplete在那裏我可以這樣做$('#loader').show();

有沒有我可以在socket.io捕捉任何事件來實現這一目標?

回答

1

您可以通過以下思路實現這一點:

  1. SERVER:發出about_to_start事件;
  2. 客戶端:對about_to_start啓用加載程序併發出download_ready事件;
  3. SERVER:在download_ready事件發送數據,即發出download事件;
  4. 客戶端:在download事件處理數據並禁用加載程序;

這就是我會這麼做的。

順便說一句:我們在談論簡單的消息系統嗎?在這種情況下,我認爲沒有必要這樣做。下載不會超過幾秒鐘,如果可以的話,則需要優化應用程序或添加一些馬力(即如果流量太大,請添加一些機器)。跳過步驟1,2和步驟3的一半。在步驟4,您只需通知客戶:「嘿,您有一條新消息!」。

+0

是的,但有沒有辦法做到這一點全球?所以我不必在每個發射事件上設置它? – georgesamper

+0

這是一個通知系統,一個聊天和很多,所以它將是很好的設置在一個地方。 – georgesamper

+0

@George唯一的可能性是將一些自定義方法添加到您的應用程序。並且'download_ready'事件可以設置一次。您甚至可以將該方法添加到'var socket = require('socket.io');'對象。但要小心,因爲將來它可能會發生衝突(假設你想升級'socket.io'庫)。 – freakish