李廣文
互動反饋系統(Interactive Response System,簡稱IRS)是一種以多媒體、計算機網絡等現代信息技術為基礎的網絡平臺[1]?;臃答佅到y使學生人手一個設備,具有測查、統計和記錄功能,實現即時反饋和互動。目前,市場上流行的各種互動反饋系統產品都使用無線通訊技術,遙控器由早期的紅外線(IR)逐步進化到采用無線射頻(RF)技術。投票是互動反饋系統的基本功能,題型一般為選擇題或是非題,題目可以是純文字的或帶有多媒體素材的題干或選項。當學生提交答案后,系統可以顯示出長條圖、圓餅圖或其他類型的統計圖。
互動反饋系統普遍應用于課堂形成性評量,教師可在教學過程中隨時穿插問題,以了解學生對知識的掌握情況,達到實時教學(Just-in-Time Teaching,JiTT)的效果。研究發現,互動反饋系統可以提高學生的課堂參與度,促進學生對于復雜學科的理解,提高學生學習的興趣和愉悅感,增強課堂互動性。尤其是IRS的匿名特性,能使學生在沒有壓力的狀態下提供個人答案,不用擔心被其他同學取笑[2]。
隨著一對一數字化學習環境的出現和電子書包逐漸進入課堂教學,可以利用現有無線網絡環境,通過Web應用方式開展互動即時反饋教學,這是值得研究的一個方向,其中關鍵是要解決即時性問題。
以往的Web應用為了實現即時通訊,都是采用輪詢的方式,即每隔特定時間由瀏覽器向服務器發出HTTP request,然后服務器將最新的數據返回客戶端的瀏覽器。這種傳統的模式具有明顯的缺點,即瀏覽器需要不斷地向服務器發出請求,這樣會占用很多帶寬和服務器資源。
針對這種狀況,HTML5定義了WebSocket協議,能更好地節省服務器資源和帶寬,并達到實時通訊。WebSocket是HTML5的一種新的通信協議,是下一代“客戶端—服務器”的異步通信方法。它使用ws或wss協議,實現了任意的客戶端(瀏覽器)和服務器程序的雙向通訊。在WebSocket中,瀏覽器通過JavaScript向服務器發出建立WebSocket連接的請求,連接建立以后,兩者之間就可以直接進行數據傳送,同時還允許跨域通信。因為WebSocket連接本質上就是一個TCP連接,所以在數據傳輸穩定性和數據傳輸量大小方面,和輪詢以及Comet技術相比,具有很大的性能優勢。
在流量和負載增大的情況下,WebSocket方案相比傳統輪詢方案有極大的性能優勢(如圖1所示)。因此,WebSocket將是小型實時Web應用的首選方案,十分適合互動即時反饋系統的開發。

圖1 輪詢和WebSocket實現方式的網絡負載對比圖[3]
Node.js是一個服務器端的解決方案,基于V8引擎開發,提供了高效的服務器端JavaScript框架運行環境,可以運行JavaScript,并可作為Web服務來處理各種HTTP請求。Node.js通過大量擴展庫(模塊)實現各種網絡、HTTP、文件系統、連接數據庫等功能。Socket.IO是Node.js的一個擴展模塊,基于Node.js并簡化了WebSocket,統一了通信的API,使得交互式、多用戶Web應用成為可能。Socket.IO支持WebSocket,Flash Socket,AJAX long-polling,AJAX multipart streaming,Forever IFrame和JSONP polling,有效解決了實時通信的問題,統一了服務端與客戶端的編程方式,服務器端和客戶端可以互發事件,互發數據,相互通信,甚至支持服務器端對所有客戶端的數據廣播。
在Node.js中,可以通過創建一個典型的HTTP服務器,把服務器的實例傳遞到Socket.IO,再創建連接、斷開連接、建立消息監聽器,跟在客戶端一樣。Node.js通過socket.emit()函數向當前客戶端發送自定義消息和參數,也可以通過socket.broadcast.emit()廣播發送給所有客戶端,同時服務器端和客戶端均通過socket.on()響應特定消息并觸發相應的處理。一個簡單的服務器端JS腳本(app.js)如下:

由此可見,Node.js與Socket.IO的編程相當簡單,可以快速構建多用戶交互和即時性的Web應用。
Web模式的互動教學即時反饋系統分為服務器端、教師端和學生端三部分,教師和學生端通過網頁形式,均視為Node.js的客戶端。以最簡單的投票和單選功能為例,具體介紹如何運用Node.js和Socket.IO聯合開發互動教學即時反饋系統。
首先,服務器端采用express框架,express是Node.js的一種Web框架。在服務器端腳本中創建express實例和Socket.IO,并設置好連接監聽器,專門處理教師端和學生端發送的消息,并將處理結果以消息形式發送給相應的客戶:


上述便是互動教學即時反饋系統最基本的代碼。實際上為了實現更方便快捷的師生交互和更豐富的功能,各程序的代碼還是較為復雜的,但最核心的還是Node.js和Socket.IO的消息發送和事件驅動機制?;贜ode.js和Socket.IO聯合開發的互動教學即時反饋系統如圖2所示。

圖2 基于Node.js和Socket.IO聯合開發的互動教學即時反饋系統
隨著信息技術與學科的整合,信息技術將在中小學課堂上發揮更大的作用,基于Socket.IO設計并實現課堂互動教學即時反饋系統是一個新的嘗試,也是一種簡單、有效而又成本低廉的IRS實現方式。相信不久的將來,Socket.IO技術將為一對一數字化學習環境和電子書包學習方式提供更多快捷、實用的即時課堂互動教學工具,促進信息技術與課堂教學的深度融合。
[1]馬宗振.互動反饋系統的教學功能和應用設計[J].中小學信息技術教育,2007(2):11-14.
[2]王緒溢.數字教室中有效學習的教學工具:實時反饋系統[EB/OL].http://www.945enet.com.tw/epaper/contents/ha/090/02.htm.
[3]Peter Lubbers, Frank Greco.HTML5 Web Sockets: A Quantum Leap in Scalability for the Web[EB/OL].http://www.websocket.org/quantum.html.