使用WebSocket进行文件传输



我的一位大学讲师指出,看到WebSockets用于文件传输会很有趣。我想使用base64对图像文件进行解码和编码是可能的,但是是否可以通过WebSocket发送JavaScript/CSS文件

我使用的服务器是Node.js,我的浏览器是Google Chrome 16。

。您可以通过WebSockets(或者AJAX)发送JavaScript和CSS。您也不需要像对图像一样对CSS和JavaScript进行base64编码,只要WebSocket服务器正确地对JavaScript中的任何特殊Unicode字符进行UTF-8编码即可。

一旦您通过WebSocket收到Javascript或CSS,您就可以使用以下机制加载它们(其中类型为"script"或"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);
}

这种机制在IE8和更早版本中可能会遇到问题,但由于您使用的是WebSockets,我怀疑您的目标是现代浏览器。您可以从浏览器的Javascript控制台验证dynamic_load函数是否工作:

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

我的node.js ws库处理文件发送,甚至是二进制文件发送。看看这里的一个例子,它可以上传:https://github.com/einaros/ws/tree/master/examples/fileapi

然而,与其使用websocket来接收网页资产(脚本、css、图像等),我建议坚持使用SPDY——它正是为此目的而精心制作的。Node.js支持spdy(请参阅https://github.com/indutny/node-spdy)。

相关内容

  • 没有找到相关文章

最新更新