2012-02-09 39 views
6

Một trong những giảng viên đại học của tôi đã chỉ ra rằng sẽ rất thú vị khi thấy WebSockets được sử dụng để truyền tệp. Tôi muốn tưởng tượng nó sẽ có thể giải mã và mã hóa một tập tin hình ảnh bằng cách sử dụng base64, tuy nhiên nó sẽ có thể gửi các tập tin JavaScript/CSS thông qua WebSocket?Sử dụng WebSocket để chuyển tập tin

Máy chủ Tôi đang sử dụng là Node.js, và trình duyệt của tôi là Google Chrome 16.

Trả lời

8

. Bạn có thể gửi JavaScript và CSS qua WebSockets (hoặc AJAX cho vấn đề đó). Bạn cũng không cần phải mã hóa base64 CSS và JavaScript như bạn sẽ làm một hình ảnh miễn là máy chủ WebSocket đúng UTF-8 mã hóa bất kỳ ký tự Unicode đặc biệt nào trong Javascript.

Một khi bạn đã nhận được Javascript hoặc CSS qua WebSocket, bạn có thể tải chúng bằng cách sử dụng cơ chế sau đây (trong đó type là một trong hai 'kịch bản' hoặc '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); 
} 

cơ chế đó có thể gặp khó khăn trong IE 8 và cũ hơn nhưng vì bạn đang sử dụng WebSockets, tôi nghi ngờ mục tiêu của bạn là các trình duyệt hiện đại. Bạn có thể xác minh rằng hàm dynamic_load hoạt động từ bảng điều khiển Javascript của trình duyệt của bạn:

+0

Bạn có thể gửi mọi thứ và mọi thứ. Không có gì bạn không thể gửi, thậm chí cả virus. – Pacerier

1

Thư viện ws node.js của tôi xử lý tệp gửi - ngay cả nhị phân. Hãy xem một trong các ví dụ ở đây, video tải lên: https://github.com/einaros/ws/tree/master/examples/fileapi

Thay vì sử dụng websockets để nhận nội dung trang web (tập lệnh, css, hình ảnh, v.v.), tuy nhiên, tôi khuyên bạn nên gắn bó với SPDY. được chế tạo cho mục đích đó. Node.js có hỗ trợ mạnh mẽ, bằng cách này (xem https://github.com/indutny/node-spdy).

+0

SPDY không còn được dùng nữa và sẽ sớm bị xóa. – Pacerier

Các vấn đề liên quan