Tôi có một vài ứng dụng di động gốc Android và iOS mà tôi đã viết kết nối trực tiếp với máy chủ XMPP mà tôi lưu trữ. Họ đẩy và kéo dữ liệu thời gian thực thông qua XMPP. Tôi cũng sử dụng một số trong số XMPP XEP extensions. Đối với các hoạt động khác, tôi có một ứng dụng django chạy trên cùng một máy chủ mà tất cả các ứng dụng di động tiêu thụ thông qua giao diện HTTP REST. Tôi sử dụng Celery và Redis cho phía django để làm một số hoạt động không đồng bộ (như làm hàng loạt nặng ghi vào db của tôi).Đẩy máy chủ thời gian thực bằng Socket IO (hoặc Strophe.js), XMPP và Django
Tất cả đều hoạt động tốt và dandy. Yay. Nhưng bây giờ tôi muốn viết một trang web front-end cho tất cả điều này, vì vậy tôi bắt đầu nghiên cứu các lựa chọn của tôi và tốt - có rất nhiều cách để da con mèo mà tôi muốn kiểm tra với cộng đồng SO trước tiên. Ý tưởng để có một thư viện js cung cấp cho tôi một API thống nhất cho các liên lạc socket (ví dụ: thử các cài đặt khác nhau của các ổ cắm web hoặc quay trở lại flash) thu hút tôi vì thế tại sao tôi đề cập đến Socket IO. Ý tưởng của việc phải chạy một máy chủ nodejs, tốt, không quá nhiều (một điều nữa để tìm hiểu), nhưng nếu tôi phải, tôi chắc chắn sẽ. Tôi biết rằng một số người sử dụng gevent as a replacement of the node server. Những người khác, quyết định viết small nodejs which they connect to the rest of their stack. Tôi có lẽ sẽ làm điều này.
Một tùy chọn khác, là sử dụng thư viện js XMPP như Strophe mà tôi không nghĩ là có dự phòng flash. Ngoài ra, tôi sẽ cần phải nghiên cứu những gì có nghĩa là cho máy chủ của tôi.
Tôi đã đọc một số câu trả lời Stackoverflow về cách thực hiện sao chổi và django - do đó tại sao dường như có một số tùy chọn.
Câu hỏi đặt ra là:
Nếu tôi muốn có lợi thế về hành vi Ổ cắm IO (với fallbacks) và tôi muốn để đẩy dữ liệu thời gian thực cho khách hàng web (hiện đang được cho ăn đến máy chủ thông qua XMPP), và sử dụng Django lựa chọn tốt nhất của tôi là gì?
Cập nhật: Máy chủ XMPP mà tôi sử dụng là ejabberd, mà còn hỗ trợ BOSH. Tôi nhận ra rằng tôi có thể sử dụng Strophe.js và do đó thông tin liên lạc của tôi sẽ đi qua một loại kết nối http bỏ phiếu dài thay vì websockets. Theo như tôi có thể nói, có một số XMPP over Websockets open source library, nhưng AFAIK cộng đồng không hoạt động như SocketIO.
Cập nhật 2: Trình duyệt mà tôi cần hỗ trợ chỉ là trình duyệt hiện đại. Tôi đoán điều này có nghĩa là dự phòng Flash sẽ không quan trọng, điều đó đang nghiêng tôi về phía strophe.js.
Có cài đặt máy chủ socket.io bằng các ngôn ngữ khác ngoài js. Nút chỉ là máy chủ tham chiếu. Tôi có một máy chủ socket.io sử dụng go-socket.io viết bằng Go. Python có TornadIO2 sử dụng lốc xoáy trong ngăn xếp của nó. – jdi