Tôi là người mới trong thế giới WebRTC và Websockets. Tôi quan tâm đến việc tạo ra một trò chơi web 1 vs 1. Vấn đề chỉ là: Làm thế nào để gửi các biến đơn giản (chủ yếu là số) từ một khách hàng đến ứng dụng khách khác?Websockets nhanh hơn WebRTC?
Tôi có máy chủ Node.js với ổ cắm web (qua socket.io). Vì vậy, đối với các khách hàng, tôi có hai giải pháp:
- Sử dụng Websockets: Các khách hàng 1 push var đến máy chủ và máy chủ đẩy var cho khách hàng 2. Giải pháp này cho phép tôi để dễ dàng thích nghi với ứng dụng của tôi cho nhiều người dùng trong một trò chơi.
- Sử dụng WebRTC: Phiếu mua hàng và câu trả lời được sended qua máy chủ có ổ cắm web. Sau đó, máy khách 1 đẩy biến đổi đến máy khách 2 thông qua DataChannel (Tôi không cần getUserData)
Tôi thích sử dụng WebRTC hơn vì nó giúp giảm bớt công việc của máy chủ. Vì vậy, tôi đã thiết lập hai giải pháp để so sánh và, bất ngờ lớn! Websockets nhanh hơn rất nhiều so với WebRTC!
Thử nghiệm của tôi rất đơn giản: chỉ cần xoay khối bằng cách sử dụng Three.js, khách hàng đầu tiên thực hiện xoay vòng tại mỗi khung hình (60 mỗi giây) và đẩy kết quả xoay tới máy khách 2. Tại quầy tiếp tân, máy khách 2 cập nhật xoay và kết xuất.
Với Websockets, kết quả là hoàn hảo nhưng với WebRTC, client 2 chạy rất chậm, như 5 FPS.
Có phải vấn đề là cách tôi đang thực hiện không? Nó có bình thường không ? Tôi đang làm việc trên máy chủ cục bộ, trên Firefox.
Từ Chrome 31, SCTP được sử dụng theo mặc định, giống như trong Firefox, cho phép các kênh dữ liệu tin cậy - mặc dù, trên thực tế, thực tế có rất ít gói bị lỗi với giao thông không đáng tin cậy. Ngoài ra, như tôi hiểu nó, SCTP có nghĩa là kiểm soát tắc nghẽn động, không phải là một giới hạn cố định về băng thông. –
@SamDutton điều này thực sự nhắc tôi về một vấn đề khác với WebRTC: Nó vẫn còn trong giai đoạn trứng nước và API và thay đổi hành vi không phải là hiếm. –
Woah, cảm ơn bạn!Thực sự, đó là chính xác những gì tôi đã tìm kiếm rất nhiều lần mà không có bất kỳ kết quả nào. – Bambou