2014-10-24 14 views
43

Tôi sắp phát triển một trang web có tính năng trò chuyện gần thời gian thực. Tôi biết rằng nó có thể được thực hiện bằng cách sử dụng giao thức xmpp hoặc websocket. Tôi cũng biết rằng các giao thức XMPP đã được phát triển vào năm 1999, và tôi đoán nó nên được trưởng thành ngày nay .Trên Mặt khác, giao thức WebSocket đã được phát triển trong 2011.Xmpp Vs Websocket

  1. nhu cầu WebSocket là gì nếu XMPP giỏi trong việc xử lý các cuộc trò chuyện thời gian thực?
  2. Sự khác nhau chính giữa 2 giao thức là gì?
  3. Và khi nào tôi nên chọn một trong số chúng?
+1

Gần đây, tôi đã gặp phải vấn đề tương tự, câu trả lời của tôi là đi đến WebSockets. Node.JS đang trở thành một ngôn ngữ cực kỳ phổ biến, và theo quyền của nó. XMPP là ok - tuy nhiên theo ý kiến ​​của tôi bạn đang hạn chế bản thân di chuyển về phía trước bằng cách quyết định đi cho công nghệ cũ này. Tuy nhiên, Node là một con thú khôn lanh và bạn phải tiếp cận nó một cách khác với cách bạn làm JavaScript. Nếu bạn đủ kiên nhẫn, tôi khuyên bạn nên đi Node - không chỉ cho việc này, mà còn cho phép bạn mở rộng ở các khu vực khác dễ dàng hơn. – JustSteveKing

+6

XMPP là một Giao thức Nhắn tin và Hiện diện có thể mở rộng, Websocket là giao thức cung cấp liên lạc song công hoàn toàn trên Cổng 80. Bạn so sánh Táo với Cam. – Flow

+7

@Flow: Tôi có thể so sánh táo với cam theo ý kiến ​​của bạn. Nhưng những gì tôi yêu cầu là tôi nên chọn khi phát triển một trang web cung cấp khả năng trò chuyện trong thời gian thực. – Khafaga

Trả lời

83

Câu trả lời ngắn gọn là 'cả hai'.

XMPP là một bộ giao thức ứng dụng để thực hiện trò chuyện trong thời gian thực (và nhiều thứ khác, cho vấn đề đó) - sau đó nó phải được vận chuyển qua mạng bằng cách nào đó, vì vậy bạn cần một ràng buộc vận chuyển. Có ba bindings giao thông chính cho XMPP -

  1. TCP/IP, đó là những gì người ta thường sử dụng trên Internet với các khách hàng có nguồn gốc trên các thiết bị
  2. HTTP (gọi tắt là Bosh), đó là những gì người ta có truyền thống được sử dụng khi sử dụng XMPP trong trình duyệt (vì TCP-IP không khả dụng đối với các ứng dụng Javascript trong trình duyệt)
  3. Websockets, một trong số đó sử dụng khi thực hiện XMPP trong trình duyệt hiện đại.

Vì vậy, nếu bạn đang phát triển một ứng dụng chat trong trình duyệt, bạn muốn chọn XMPP như giao thức ứng dụng và bạn muốn sử dụng WebSockets (trong một trình duyệt hiện đại) hoặc Bosh (trong trình duyệt cũ hơn) như vận tải mạng. Nếu bạn sử dụng thư viện XMPP cho Javascript như Stanza.io (https://github.com/otalk/stanza.io), nó sẽ hỗ trợ cả hai và bạn sẽ chỉ nghĩ về 'XMPP' thay vì lớp vận chuyển, ngoài việc thiết lập khi bạn phải nói với nó điểm cuối để kết nối với.

(Bạn không thể sử dụng 'chỉ ổ cắm web' để trò chuyện - bạn có thể sử dụng ổ cắm web không có XMPP, nhưng điều này thực sự có nghĩa là bạn đang phát minh giao thức tầng ứng dụng của riêng bạn để trò chuyện và tỷ lệ cược là bạn ' sẽ tiết kiệm rất nhiều thời gian và đau đầu bằng cách tận dụng lợi thế của công việc đã đi vào viết một với các thuộc tính hữu ích (bảo mật, danh tính, khả năng mở rộng, vv) và có các thư viện và máy chủ hiện có bằng cách sử dụng XMPP thay thế.)

+1

Xin lỗi, các câu hỏi đã được một thời gian, tôi chỉ tự hỏi, do đó, nó có nghĩa là vận chuyển ràng buộc giống như socket.io/strophe.js, và xmpp là như (openfire/Ejabbered)? – John

+0

Không, những gì bạn đặt tên là thư viện so với máy chủ. – Kev

+0

Dưới đây là thông tin thêm về các lớp (bao gồm giao thông, lớp ứng dụng): https://en.wikipedia.org/wiki/OSI_model –

9

Về cơ bản, bạn đang so sánh hai thứ khác nhau với nhau. XMPP là một giao thức ứng dụng trong khi WebSockets là một giao thức truyền tải.

Tôi nghĩ rằng việc sử dụng XMPP sẽ giúp bạn tiết kiệm rất nhiều thời gian. Tuy nhiên, bạn sẽ mất tự do để thực hiện các chức năng theo cách mà các suite bạn tốt nhất. Nếu ứng dụng của bạn sẽ chỉ sử dụng các chức năng nhắn tin và danh sách bạn bè một đối một mà không có kế hoạch rõ ràng về những gì bạn sẽ thêm vào trong tương lai, WebSockets + sẽ là một giải pháp khả thi. Mặt khác, nếu ứng dụng của bạn sẽ được hưởng lợi từ các phần mở rộng XMPP khác như nhắn tin nhiều bên và các phiên truyền thông ngang hàng thì tốt hơn nên sử dụng XMPP vì các hàm như vậy sẽ đòi hỏi nhiều thời gian để được triển khai.

+0

Không có gì ngăn bạn sử dụng XMPP và triển khai một cách tiếp cận khác, ví dụ: danh sách XMPP. Bạn không mất tự do bằng cách sử dụng XMPP. – Flow

+2

Tôi nghĩ bạn sẽ mất tự do vì bạn sẽ sử dụng một số thư viện máy khách và máy chủ để sử dụng XMPP. Tôi cũng đồng ý rằng một số phần của XMPP có thể được thực hiện khác nhau mà làm cho mức độ tự do bạn mất phụ thuộc vào sự hiểu biết của bạn về làm việc bên trong của việc thực hiện XMPP bạn đang sử dụng. – Kumait

+1

Tôi không biết bất kỳ thư viện hoặc máy chủ ứng dụng XMPP nào sẽ không cho phép bạn triển khai ví dụ của riêng bạn Điều giống như danh sách. – Flow