2012-10-12 32 views
7

Hãy tưởng tượng tôi muốn tạo trò chơi nhiều người chơi trong thời gian thực, với HTML5 (máy khách) và node.js (máy chủ).WebRTC là đúng? (trò chơi nhiều người chơi trong thời gian thực)

Tôi cần truyền dữ liệu rất nhanh từ máy chủ đến máy khách và ngược lại.

Trong ứng dụng gốc, tôi sẽ sử dụng UDP để có nhiều dữ liệu nhất (vị trí trình phát, ...), vì nó nhanh hơn TCP và không quan trọng khi bị mất.

Trong HTML5 Tôi có thể (chỉ) sử dụng WebSockets. WebSockets là trên đầu trang của TCP và do đó không đủ nhanh cho một hiệu suất tốt.

Tôi đã nghe nói về WebRTC, nhưng tôi không biết đây có phải là giải pháp cho vấn đề này hay không.

Có ai có kinh nghiệm với nó không?

(Tôi biết, rằng WebRT vẫn không được hỗ trợ cho trình duyệt nhất, nhưng điều đó không quan trọng với tôi.)

+0

Bạn có chắc chắn rằng các ổ cắm web quá chậm đối với trường hợp sử dụng của mình không? Một ổ cắm tcp được mở trong suốt thời gian phiên websocket của bạn, do đó bạn không phải lo lắng về chi phí kết nối cho mỗi thư. – simonc

+0

TCP: Phân phối tin nhắn đáng tin cậy; tất cả dữ liệu được thừa nhận Việc phân phối tất cả dữ liệu được quản lý và dữ liệu bị mất được truyền lại tự động. UDP: Không đáng tin cậy, phân phối nỗ lực tốt nhất mà không có xác nhận Vì vậy, TCP chỉ đơn giản là kỹ thuật sai đối với trường hợp sử dụng này. – appsthatmatter

+1

Hãy thử thực hiện nó bằng cách sử dụng WebSockets và đo xem nó có thực sự quá chậm (không cần phải nói, trừu tượng việc triển khai vận tải của bạn để nếu WebSockets không thành công, bạn có thể sử dụng cái gì khác mà không cần tháo nhiều mã). Ngay bây giờ bạn đang tối ưu hóa sớm. – ebohlman

Trả lời

2

Về WebRTC, âm thanh giống như những gì bạn cần là DataChannel: xem draft protocolHTML5 Rocks article (tuyên bố từ chối trách nhiệm: Tôi đã viết nó!)

DataChannel là một công việc đang được tiến hành, chưa được thực hiện bởi bất kỳ trình duyệt nào.

Đối với các thành phần WebRTC khác, MediaStream (getUserMedia) được hỗ trợ bởi Chrome, Firefox Nightlies và Opera; RTCPeerConnection nằm trong Chrome ổn định, sau một lá cờ (không có cờ trong các phiên bản sắp tới), và hứa cho Firefox 18 trong Q1 2013.

EDIT: RTCDataChannel hiện đã được triển khai trên Firefox và Chrome.

Bản trình diễn của một trang Chrome ': simpl.info/dc, Firefox demo.

+0

Về các thông báo mới nhất được thực hiện, tôi thấy MediaStream và PeerConnection đang tiến nhanh. Làm thế nào là đi DataChannel? Ngoài ra, hạt của bạn đề cập đến DataChannel cho giao tiếp giữa trình duyệt và trình duyệt. Nó hoạt động tốt với trình duyệt tới máy chủ, phải không? – Cystack

+1

Cảm ơn bạn đã chỉ ra điều này - chưa xem xét điều này một lúc: đã thêm EDIT. Trên máy chủ, bạn có thể sử dụng API WebRTC C++. –

1

RTCDataChannel cung cấp phiên dựa trên/đáng tin cậy cũng như vận chuyển không cần thiết/không đáng tin cậy, tương tự như TCP và UDP trong ứng dụng khách gốc, tương ứng. Thêm thông tin here. Tính đến năm 2013, đây là một công nghệ khả thi, mặc dù chỉ trong các phiên bản Chrome và Firefox sau này.

According to html5rocks.com, giờ đây, bạn cũng có thể sử dụng các loại nhị phân để truyền. Vì vậy, bạn nên có tất cả các khả năng mà bạn sẽ có với một khách hàng UDP gốc hiệu quả. Tuy nhiên, tôi vẫn chưa chắc chắn liệu chuyển nhị phân đã thực hiện theo cách của nó từ kho lưu trữ webrt, where it has been fixed, tất cả các cách vào Chrome hay nó vẫn chỉ khả dụng trong Chrome Canary ở giai đoạn này.

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