Tôi có một trò chơi tôi đang làm việc và tôi nghe nói rằng UDP là cấp trên cho các trò chơi thời gian thực. Tôi biết rằng socket.io sử dụng TCP và đã tự hỏi nếu có một số cách để chuyển nó sang UDP. Tôi đã thử tìm kiếm nó nhưng chỉ tìm thấy các bài viết từ khoảng năm 2012 cho biết UDP chỉ là thử nghiệm trong các trình duyệt.Có thể sử dụng UDP với socket.io không?
Trả lời
Không, điều đó là không thể.
socket.io
sử dụng phương tiện vận chuyển webSocket
. webSocket
là kết nối TCP, không phải kết nối UDP. Vì vậy, socket.io không sử dụng UDP - nó sử dụng TCP.
Tốt nhất tôi biết, không có hỗ trợ UDP chuẩn trong các trình duyệt có thể truy cập từ Javascript trang HTML thông thường.
tài liệu tham khảo khác về chủ đề này:
Why Can't I Send UDP Packets From a Browser
Reading from udp port in browser
Chrome Supports TCP and UDP Sockets
Write a chrome extension to support UDP in browser
How to send a UDP Packet with Web RTC - Javascript?
How to talk to UDP sockets with HTML5?
Reading from udp port in browser
UDP có thể là một phương tiện giao thông mong muốn cho một số trường hợp khi bạn muốn các gói tin sẽ được chuyển giao càng sớm càng tốt, nhưng nếu nó không thể được gửi ngay lập tức, sau đó chỉ cần thả nó. Điều này đôi khi hữu ích trong chơi game hoặc thậm chí video streaming nơi gói tiếp theo sẽ chỉ chứa bản cập nhật tiếp theo vì vậy nếu trước đó đã không đi qua, sau đó không có vấn đề lớn và bạn không muốn có TCP cố gắng truyền lại các gói bị mất. Tuy nhiên, các trình duyệt không hỗ trợ sử dụng giao thức UDP từ trang web Javascript.
Mặc dù câu hỏi đã được trả lời, tôi muốn chỉ ra rằng có nhiều cách để thực hiện socket.io với UDP. Ví dụ: dgram thực hiện chính xác những gì bạn đang tìm kiếm.
This is hướng dẫn cho socket.io + UDP với dgram.
CẬP NHẬT:
Alexandre Lacheze phát triển một Node.js package đó sẽ đem lại UDP để trình duyệt. Nó cũng hỗ trợ socket.io. Vì vậy, câu trả lời là bằng cách nào đó đã lỗi thời.
Tôi nghĩ bạn có thể nhầm lẫn về những gì được mô tả ở đây. Tham chiếu đầu tiên của bạn chạy hoàn toàn trên node.js và không chạy trong trình duyệt. Đó chỉ là mã mẫu cho bulit hỗ trợ UDP vào node.js. Vì vậy, điều đó không liên quan gì đến UDP trong trình duyệt. Tham chiếu thứ hai của bạn là mô phỏng một giao diện giống như UDP, nhưng chạy nó trên giao diện webSocket hoặc socket.io (cả hai kết nối TCP). Vì vậy, đó là một giao diện UDP mô phỏng hoạt động trong một trình duyệt, nhưng vận chuyển thực tế là TCP, chứ không phải UDP.Vì vậy, không phải trong số này đang chạy một giao thức UDP thực tế trong trình duyệt. – jfriend00
Ví dụ thứ hai, khi được sử dụng với proxy dựa trên máy chủ chuyển đổi UDP mô phỏng này chạy trên socket.io thành UDP thực có thể được sử dụng để giao tiếp với dịch vụ UDP từ trình duyệt, nhưng không nên bị lừa khi nghĩ rằng đây là sử dụng UDP trong trình duyệt vì lý do người ta thường muốn sử dụng UDP cho trò chơi đáp ứng độ trễ thấp, vì nó không phải. Đó là thông minh và có thể có một số sử dụng thú vị, nhưng nó không phải là những gì câu hỏi này được hỏi đó là làm thế nào để chạy socket.io trên UDP. FYI, tên của giao diện trong tùy chọn thứ hai của bạn là 'SimUDP', mô phỏng UDP. – jfriend00
Vì vậy, để tóm tắt. Không có gì trong câu trả lời của bạn cho thấy việc triển khai socket.io chạy trên UDP để một phần câu trả lời của bạn hoàn toàn không được hỗ trợ. Và, khẳng định của bạn rằng gói của Alexandre Lacheze mang UDP đến trình duyệt cũng sai. Nó mang đến một giao diện mô phỏng giống như UDP thực sự đang chạy trên TCP tới trình duyệt. – jfriend00
- 1. Tôi có thể sử dụng Socket.IO với Django không?
- 2. Có thể sử dụng Socket.io với AWS Lambda không?
- 3. Sử dụng socket.io với Cluster?
- 4. Sử dụng socket.io với redux
- 5. sử dụng giao thức UDP với WCF
- 6. Sử dụng socket.io với buồm js
- 7. Google Talk có sử dụng gói udp hoặc tcp không?
- 8. sử dụng ngrok với websocket (hoặc socket.io)
- 9. Socket.io có hoạt động với Heroku không?
- 10. Ổ cắm TCP và UDP có thể sử dụng cùng một cổng không?
- 11. Điểm của việc sử dụng UDP với NIO là gì?
- 12. Sử dụng socket.io làm api
- 13. Socket.IO không thể gọi 'bật'
- 14. Phiên Socket.io không có express.js?
- 15. unity3D: kết nối với node.js bằng cách sử dụng socket.io
- 16. Dữ liệu UDP có thể được phân phối không?
- 17. Tôi có thể có phiên cố định với HAProxy và socket.io có xác thực không?
- 18. Tại sao tôi nên sử dụng Socket.io?
- 19. Cách sử dụng Websockets với Pyramid và socket.io?
- 20. Tại sao có thể sử dụng cùng một cổng trên TCP và UDP cùng một lúc?
- 21. Có thể ghi vào ổ cắm UDP bao giờ không?
- 22. nodejs socket.io không thể kết nối với máy chủ?
- 23. Mac không thể cài đặt socket.io với npm/nodejs?
- 24. Sử dụng socket.io từ một module
- 25. Tôi có thể sử dụng Node.js NPM và socket.io trên công cụ google app
- 26. Có cổng socket.io nào cho Dart không?
- 27. Tôi có thể truy cập cookie từ Socket.io không?
- 28. Sử dụng socket.io với nodej trên máy chủ có apache dưới dạng proxy ngược
- 29. Socket.IO không có máy chủ http?
- 30. Khách hàng socket.io có thể kết nối với hai máy chủ/cổng khác nhau không?
Tại sao một downvote khác? Downvoters, xin giải thích. Nếu bạn có thịt bò hợp pháp, tôi sẽ sửa câu trả lời của tôi. Socket.io trong trình duyệt KHÔNG chạy trên UDP. Điều đó chỉ đơn giản là không tồn tại vì trình duyệt không hỗ trợ giao thức UDP dưới bất kỳ hình thức nào. Nếu bạn đang downvoting vì bạn đang bị lừa bởi câu trả lời của Ramazan, sau đó xin vui lòng đọc các ý kiến dưới đây mà câu trả lời là câu trả lời là rất gây hiểu lầm và không cung cấp những gì câu hỏi này được yêu cầu. – jfriend00