2012-09-01 22 views
19

Có sự cố về cách chia sẻ bộ đệm giữa node.js và trình duyệt chứa dữ liệu nhị phân. Tôi khá hài lòng với Socket.io là lớp vận chuyển nhưng vấn đề là không có cổng nào của Buffer class cho trình duyệt. Không phải thứ tôi có thể tìm thấy anywaysChia sẻ bộ đệm nhị phân giữa máy chủ Node.js và Trình duyệt

Tôi cũng đã xem qua binary.js và tôi đã tự hỏi liệu có cách nào tốt để kết hợp chúng có socket.io là lớp truyền tải và Binary.js làm phương tiện dữ liệu hay không. Tôi cũng thấy điều này question, đó là loại về chủ đề nhưng không thực sự giải quyết vấn đề.

Tôi biết hỗ trợ nhị phân socket.io được thêm vào nhưng tôi chưa tìm thấy bất kỳ tài liệu nào về chủ đề này.

Cập nhật:

Dường như binary.js sẽ không phải là giải pháp. Yêu cầu cơ bản mà tôi muốn là chia sẻ các khả năng tương tự mà Buffer có trong nút với trình duyệt.

nhu cầu của tôi bao gồm hai yếu tố:

  1. Xử lý bộ đệm theo cách tương tự trong cả hai máy chủ và trình duyệt.

  2. hỗ trợ Dữ liệu nhị phân.

Tôi có thể sẽ sử dụng Bộ đệm mảng.

Chỉnh sửa: Vì node.js chạy trên V8, bạn có thể sử dụng ArrayBuffer. Dường như vấn đề được giải quyết. Tuy nhiên, từ những gì tôi biết, người dân đã quyết định rằng bạn nên tạo một mô-đun đệm và quản lý nó trong các ràng buộc C mà họ tạo ra (từ một bài nói của Ryan Dahl). Tôi nghĩ rằng điều này đã làm với cách đệm được thực hiện qua mạng. Điều này có nghĩa ArrayBuffer vẫn không phải là một phương tiện dữ liệu tốt để chia sẻ giữa máy chủ và trình duyệt.

+1

Tôi không hiểu chính xác vấn đề là gì. Bạn quan tâm chính xác đến chức năng nào không tồn tại trong trình duyệt? –

+0

Nhu cầu của tôi bao gồm hai điều: 1. Xử lý bộ đệm theo cách tương tự trong cả Máy chủ và Trình duyệt. 2. Hỗ trợ dữ liệu nhị phân. – qballer

+0

Sử dụng DataView và ArrayBuffer – Chiguireitor

Trả lời

8

browser-buffer mô phỏng API Buffer của Node trong trình duyệt.

Nó được hỗ trợ bởi Uint8Array, vì vậy browser support là sơ sài.

+0

Đây là loại câu trả lời tôi đang tìm kiếm, điều này là, nó vẫn rất không ổn định. – qballer

+0

Vâng, có rất ít hoạt động trong dự án; có vẻ như đó là mã thử nghiệm của ai đó. Tôi muốn sử dụng nó như là một điểm khởi đầu tốt - bạn sẽ phải ngã ba và cải thiện mã. – josh3736

2

Chuỗi dựng sẵn của JavaScript sử dụng ký tự rộng trong nội bộ. Vì vậy, họ có thể dễ dàng lưu trữ một giá trị từ 0 đến 255 trong mỗi vị trí ký tự. Đây là một tính năng ngôn ngữ JavaScript, vì vậy nó sẽ hoạt động tương tự trong trình duyệt hoặc trong node.js.

Bạn có thể sử dụng charCodeAt để trích xuất các giá trị của một vị trí cụ thể trong một chuỗi và fromCharCode để tạo ra một nhân vật (mà bạn có thể thêm vào một chuỗi) với một giá trị từ 0 đến 255.

Bạn có thể sử dụng các hàm chuỗi khác nhau để thao tác dữ liệu trong biểu mẫu này. Bạn có thể tạo hằng số sử dụng hằng số chuỗi JavaScript như sau: "\x00\x12\x34\x56".

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