2013-05-19 35 views
5

Tôi đang sử dụng autobahn để chạy máy chủ websocket để bổ sung cho ứng dụng Django của tôi. Đôi khi, tôi cần phải gửi tin nhắn từ Django đến máy chủ websocket, hoạt động tốt bằng cách sử dụng mô-đun websocket-client. Tôi rất thích sử dụng giao thức WAMP thay vì API RPC/PubSub trông tuyệt vời, nhưng mã máy khách python được triển khai như một giao thức bị xoắn và tôi không thể tìm ra cách sử dụng giao thức đó, ví dụ như gọi hàm và không từ một số vòng lặp sự kiện nước ngoài. Có điều gì tôi không thấy trong tài liệu hay kiến ​​trúc của tôi khác nhau không?Khách hàng bắt buộc đối với máy chủ WAM autobahn?

+2

Mọi thứ trong Python là bắt buộc. Tôi nghĩ bạn có nghĩa là "chặn" hoặc có thể "đồng bộ". –

+0

Về kiến ​​trúc, có (ít nhất) 2 tùy chọn: a) chạy Autobahn như một máy chủ riêng biệt và truy cập đó như là một khách hàng từ Django. b) chạy Django và Autobahn (máy chủ) trong 1 quy trình. Có một ví dụ để thực hiện b) với Flask và Autobahn tại đây https://github.com/tavendo/AutobahnPython/blob/master/examples/websocket/echo_wsgi/server.py – oberstet

+0

@ Jean-PaulCalderone: Bạn nói đúng, tôi muốn một cuộc gọi chặn, đồng bộ. – Simon

Trả lời

5

https://github.com/itamarst/crochet có thể giúp bạn thực hiện việc này.

+0

Điều đó có vẻ rất hứa hẹn, cảm ơn bạn :-) – Simon

+0

Thú vị. Và yeah, bằng cách sử dụng lib này có vẻ như bạn có thể làm những gì bạn muốn: chạy Autobahn (client) trong ứng dụng của bạn, nhưng ngăn chặn (từ POV ứng dụng của bạn). – oberstet

+0

Không phải chỉ có thể khởi tạo và sử dụng trình khách WAMP mà không cần chạy vòng lặp sự kiện? Hay điều đó đòi hỏi phải tạo ra một triển khai "eventloop-less" đầy đủ ngoài việc triển khai Twisted & asyncio? – Petri

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