2014-06-05 10 views
9

Tôi đã xem qua toàn bộ tài liệu Socket.IO, nhưng, mặc dù họ hứa nó ở đó, tôi không thể tìm thấy một ví dụ đơn giản, tối thiểu về cách thức gửi dữ liệu nhị phân giữa máy chủ/máy khách.Làm thế nào để gửi dữ liệu nhị phân từ một máy chủ socket.io Node.js đến một trình duyệt của khách hàng?

Làm cách nào?

+0

[Đây] (http://stackoverflow.com/a/24124966/2600208) là một ví dụ về làm thế nào để gửi hình ảnh như một bộ đệm từ máy chủ và làm cho nó vào một Canvas HTML5 trên máy khách. – Curious

+0

@Viclib Bạn đã hoàn thành công việc này chưa? hãy chia sẻ..!!! –

+0

Ah, tôi có, tôi đã quên làm thế nào vào thời điểm này, xin lỗi vì không cập nhật. Nhưng như xa như tôi nhớ, tất cả các bạn phải làm là để có được một bộ đệm từ một Float32Array (hoặc tương tự) (một cái gì đó như thế: 'myData = new Float32Array ([1,2,3,4]). Buffer;' và gửi thông qua 'socket.io', nghĩa là' socket.emit ("foo", myData) '. Nó tự động xử lý nó dưới dạng dữ liệu nhị phân. Sau đó, ở đầu kia, bạn phải chuyển đổi nó trở lại:' socket.on ("foo", function (data) {data = new Float32Array (dữ liệu);}) '. Tôi đã viết rằng bằng bộ nhớ, tuy nhiên, nhưng tôi nhớ có một ví dụ trên bài đăng blog về việc phát hành' socket. io' 1.0 – MaiaVictor

Trả lời

9

Thực tế là trong tài liệu. Tài liệu hiện tại cho Socket.io nói dưới Socket.emit:

[...] Phát ra sự kiện đến ổ cắm được xác định theo tên chuỗi. Mọi thông số khác có thể được bao gồm. Tất cả các cấu trúc dữ liệu đều được hỗ trợ, bao gồm Bộ đệm [...]

Vì vậy, nếu bạn có thể gửi bộ đệm, bạn có thể gửi dữ liệu nhị phân. Tất cả những gì bạn phải làm là đóng gói dữ liệu của bạn vào một đối tượng Buffer.

Bạn có thể muốn đọc Socket.io Binary SupportSending and Receiving Binary

+4

Ah, đó là những gì tôi đã mất tích, sau đó tôi đã tìm kiếm nó sai.Nó là tự động, sau đó? Nếu tôi gửi một Float32Array nó sẽ chỉ đi như nhị phân, thay vì được serialized để JSON? – MaiaVictor

+0

này quá là những gì tôi đang tự hỏi –

1

Bắt đầu từ socket.io 1.0 có thể gửi dữ liệu nhị phân. http://socket.io/blog/introducing-socket-io-1-0/

Cách thức gửi và nhận dữ liệu nhị phân chưa rõ ràng trong tài liệu chính thức. Các tài liệu duy nhất là:

var socket = new WebSocket('ws://localhost'); 
socket.binaryType = 'arraybuffer'; 
socket.send(new ArrayBuffer); 

Tôi đề nghị bạn hãy xem câu trả lời này, nơi bạn có thể tìm thấy ví dụ cơ bản việc triển khai mã cho máy chủ và máy khách (javascript và java quá):

How to send binary data with socket.io?

Phần tốt là nó cũng hoạt động trên Android! (Nếu bạn muốn)

Cheers

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