2012-02-09 89 views
6

我的一位大學講師指出,看到用於文件傳輸的WebSockets會很有趣。我可以想象使用base64解碼和編碼圖像文件是可能的,但是可以通過WebSocket發送JavaScript/CSS文件嗎?使用WebSocket進行文件傳輸

我使用的服務器是Node.js的,我的瀏覽器是谷歌瀏覽器16.

回答

8

。您可以通過WebSockets(或針對該問題的AJAX)發送JavaScript和CSS。只要WebSocket服務器正確地使用UTF-8編碼Javascript中的任何特殊的Unicode字符,您也不需要base64對CSS和JavaScript進行編碼。

一旦收到通過WebSocket的JavaScript或CSS,你可以用下面的機制加載它們(其中類型爲「腳本」或「CSS」):

function dynamic_load(type, content) { 
    var elem = document.createElement(type); 
    elem.type = (type === 'script') ? 'text/javascript' : 'text/css'; 
    elem.innerHTML = content; 
    document.getElementsByTagName("head")[0].appendChild(elem); 
} 

這種機制可能有麻煩IE 8和更早版本,但由於您使用WebSockets,我懷疑你的目標是現代瀏覽器。您可以驗證dynamic_load功能,從瀏覽器的JavaScript控制檯的工作原理:

dynamic_load('script', "alert('hello world');"); 
+0

你可以發送任何東西和一切。沒有什麼你不能發送的,甚至是病毒。 – Pacerier 2015-03-16 13:49:06

1

我的node.js WS庫處理文件發送 - 即使是二進制的。看看這裏的一個例子,它可以上傳:https://github.com/einaros/ws/tree/master/examples/fileapi

但是,我不推薦使用websockets來接收網頁資源(腳本,css,圖像等),但我建議堅持使用SPDY--這是故意的爲此目的而製作。順便提一句,Node.js有spdy-support(參見https://github.com/indutny/node-spdy)。

+0

SPDY已棄用,即將移除。 – Pacerier 2015-03-16 13:49:50