2011-12-17 42 views
41

Vui lòng sửa tôi nếu câu hỏi này trùng lặp. Về node.js, tôi đang sử dụng socket.io cho kết nối socket thời gian thực từ ứng dụng khách đến ứng dụng máy chủ. Tôi chỉ nghe nói về engine.io, là engine.io một thay thế cho socket.io? tôi không thể tìm thấy bất kỳ thông tin hữu ích trên website engine.ioSự khác biệt giữa engine.io và socket.io là gì?

Cảm ơn trước

Trả lời

81

engine.io là một thư viện cấp thấp hơn so với socket.io.

Engine là Socket.IO kết nối Express.

Nếu bạn muốn trừu tượng mức thấp hơn, hãy sử dụng engine.io. Nếu bạn muốn một trừu tượng websocket, hãy tiếp tục sử dụng socket.io.

engine.io được bạn quan tâm nhiều hơn nếu bạn đang xây dựng thư viện/khung công tác trên đỉnh socket.io.

socket.io là bạn quan tâm nhiều hơn nếu bạn đang xây dựng một ứng dụng trên đỉnh socket.io.

+0

Cảm ơn bạn đã liên kết, chính xác những gì tôi cần: D –

+0

Trả lời rõ ràng, Cảm ơn! Vì vậy, nếu tôi cần multiplexing tôi nên sử dụng Socket.IO – Julian

18

socket.io được xây dựng trên đầu trang của engine.io.

socket.io là engine.io có chuông và còi.

nếu bạn không cần tất cả mọi thứ socket.io có (redis lưu trữ, nhóm, vv) chỉ cần sử dụng động cơ.

+1

Tôi tin rằng khi Socket.IO 1.0 đi ra nó sẽ được xây dựng trên Engine.IO, nhưng ngay bây giờ (0.9) nó không phải: https://groups.google.com/d/msg/socket_io/BudZpQiyMbQ/tnm-I-WNJWkJ – bendytree

13

Một chút muộn cho trò chơi :-), nhưng tôi sẽ đề cập đến nó ở đây cho hậu thế.

Ngoài việc là "cấp thấp hơn", một trong những điểm khác biệt quan trọng nhất là socket.io sẽ bắt đầu với các ổ cắm web trước tiên & phân hủy cho đến khi tìm thấy phương tiện có thể hoạt động. Mặt khác, engine.io sẽ bắt đầu với việc bỏ phiếu ngắn (và nâng cấp bên cạnh cho đến khi nó chạm vào tường).

Tại sao?

Từ góc độ người dùng, kết nối WebSocket không thành công có thể dịch trong ít nhất 10 giây chờ ứng dụng thời gian thực bắt đầu trao đổi dữ liệu. Điều này ảnh hưởng đến trải nghiệm người dùng.

Hiện tại (2013), ổ cắm web chưa phổ biến (ví dụ: các trình duyệt cũ hơn, mạng di động, v.v.) để bắt đầu với XHR 1st.

Xem https://github.com/LearnBoost/engine.io (Mục tiêu) để biết thêm thông tin.

7

Socket.IO v0.9 đã lỗi thời và lỗi một chút và Engine.IO là người kế nhiệm tạm thời. Socket.IO v1.0 (sẽ sớm được phát hành) sẽ sử dụng Engine.IO và tốt hơn nhiều so với v0.9.

Trong các thử nghiệm của tôi, Engine.IO xuất hiện để thực hiện tốt hơn so với Socket.IO v0.9, xem so sánh: https://medium.com/node-js-javascript/b63bfca0539

Socket.IO cố gắng kết nối lại trong một thời gian sau khi kết nối bị mất, trong khi Engine.IO không làm.

Socket.IO hỗ trợ phòng trong khi Engine.IO thì không.Bạn sẽ cần phòng (hoặc thông qua các mô-đun hoặc thực hiện của riêng bạn) nếu bạn sẽ có kết nối nghe dữ liệu khác nhau/kênh.

+1

Ý của bạn là "** Socket.IO ** hỗ trợ các phòng trong khi Engine.IO không" (như chúng ta có thể đọc trên blog của bạn)? – Curious

+0

Vâng, cảm ơn vì đã sửa @Zub –

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