使用WebSocket进行文件传输

Jac*_*ack 7 javascript websocket

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

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

kan*_*aka 8

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

一旦通过WebSocket接收到Javascript或CSS,就可以使用以下机制加载它们(其中type是'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);
}
Run Code Online (Sandbox Code Playgroud)

在IE 8及更早版本中,该机制可能有问题,但由于您使用的是WebSockets,我怀疑您的目标是现代浏览器.您可以从浏览器的Javascript控制台验证dynamic_load函数是否有效:

dynamic_load('script', "alert('hello world');");
Run Code Online (Sandbox Code Playgroud)