2009-10-03 37 views
23

Tôi sẽ triển khai Comet bằng Python (mặc dù tôi nghe những điều tốt đẹp về việc xóa bỏ tôi không vui mừng về việc hỗ trợ một máy chủ web dựa trên Erlang ngoài mọi thứ khác trong phần cuối của chúng tôi). Tôi đã tìm thấy một vài khả năng:Khuyến nghị mới nhất cho Comet bằng Python?

(cũng có một số lựa chọn khác mà giao diện với các máy chủ Java, nhưng Tôi không quan tâm đến những điều đó)

Ai đó có thể đưa ra một đề xuất trong số những triển khai này, xem xét hiệu suất, cộng đồng và dễ thực hiện không?

+1

Bạn cũng có thể quan tâm trong câu trả lời cho câu hỏi này, trong đó có một số lựa chọn thay thế khác: http://stackoverflow.com/questions/960969/python-comet-server –

+0

Cảm ơn! StreamHub có vẻ như nó yêu cầu Java? Tuy nhiên, tôi đã thêm quỹ đạo vào danh sách. –

+1

Đây là một ứng dụng Comet ví dụ đầy đủ tính năng (sử dụng Django + Orbited + Twisted) http://github.com/clemesha/hotdot – clemesha

Trả lời

8

Cá nhân tôi đang sử dụng Orbited, cả bởi vì tôi đã sử dụng Twisted và vì nó có vẻ đã trưởng thành. Twisted có một lịch sử lâu dài đẹp với nhiều người dùng, đặc biệt là so với Diesel và Tornado. Orbited thực sự được xây dựng trên Twisted.

Có mục nhập blog tốt bao gồm end-to-end orbit solution here. Nó gửi dữ liệu từ một kịch bản python đến một máy chủ STOMP (MorbidQ) tới Orbited to Javascript - kết xuất dữ liệu đó dưới dạng đồ thị.

Tornado có vẻ khá mới mẻ đối với hiện trường, tôi không thể tìm thấy sao chổi xoắn và tôi đã không nghe nói về động cơ diesel. Tôi đặc biệt thích cách Orbited có thể chuyển tiếp bất kỳ loại tcp/ip nào nhưng làm cho nó dễ dàng để nối các trình khách javascript với một thông điệp đi qua STOMP backend.

5

Tôi khuyên bạn nên sử dụng Orbited nếu bạn muốn viết ứng dụng Comet. Điều này làm cho Comet phức tạp hơn để thực hiện (hơn là tạo một ứng dụng Ajax), là bạn cần cả máy khách (máy khách JavaScript Comet) và máy chủ (máy chủ web không đồng bộ như Twisted) làm việc kết hợp, và điều này là những gì bạn nhận được với Orbited - cả khách hàng javascript và máy chủ.

Cả Tornado và Diesel cung cấp chủ yếu phần máy chủ không đồng bộ, nhưng thiếu mã javascript khách hàng quan trọng.

Thêm vào đó, có một cộng đồng khá tốt xung quanh quay quanh, và một số người đang xây dựng các ứng dụng mát mẻ với nó, trang này cho thấy một vài những ứng dụng: http://orbited.org/wiki/Sites

2

Tôi cũng đã sử dụng Twisted. Nhưng thay vì Orbited, tôi đang sử dụng Nevow.Athena. Nó thực sự đơn giản: tìm hiểu thêm đọc LiveElement tutorial.

+1

Lưu ý: trang divmod.org bị lỗi trước đây và không bao giờ quay lại trực tuyến. Tôi tin rằng phiên bản mới nhất của hướng dẫn LiveElement có tại đây: http://web.archive.org/web/20101012035741/http://divmod.org/trac/wiki/DivmodNevow/Athena/Tutorials/LiveElement –

+0

Ngoài ra, _some_ của tài liệu Divmod cũ có tại đây: http://divmodsphinx.funsize.net –

2

Bạn đã định cư trên sao chổi? Tại sao không WebSockets? Nếu sau này cũng là một tùy chọn, tôi muốn tham khảo https://github.com/tavendo/AutobahnPython thực hiện WebSockets trong Twisted (tài liệu có sẵn trên http://autobahn.ws/python). Đó là tiêu chuẩn tuân thủ, có API cơ bản dựa trên tin nhắn và API nâng cao để xử lý dựa trên khung hình/truyền trực tuyến và nhiều tính năng bổ sung khác.

+0

WebSockets yêu cầu Flash cho IE <9 – Lorenzo

+0

có. IE9 cũng không có WS. Microsoft có một số bản thử nghiệm WS, nhưng chỉ cho Silverlight, có thể được truy cập từ JS - một lần nữa giống như giải pháp Flash. Không có thông báo chính thức liên quan đến hỗ trợ của WS bởi MS - họ chơi trò chơi trên tiêu chuẩn sắp tới đó, cũng như trên WebGL. Tùy thuộc vào bạn nghĩ gì về điều đó;) – oberstet

+0

IE10 đi kèm với hỗ trợ cho các thông báo WebSockets nhị phân: http://www.tavendo.de/autobahn/testsuite.html – oberstet

1

câu trả lời của tôi để this question cung cấp một ví dụ về máy chủ đẩy sử dụng thư viện autobahn mà IMHO là cho đến nay thân thiện khuôn khổ WebSocket sử dụng hầu hết các trang bị xoắn. Cũng là một thực hiện JS có sẵn cũng như Android.

Comet là hoàn toàn thay thế bằng WebSocket và bạn nên xem xét sử dụng sau này trừ khi bạn có kế hoạch để hỗ trợ IE8 trở lên

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