sockjs-טורנדו הוא עמית בצד שרת Python של ספריית דפדפן SockJS-לקוח פועלת על גבי מסגרת טורנדו.
שרת SockJS הד פשוט יכול להיראות פחות או יותר כמו:
מהאינטרנט יבוא טורנדו, ioloop
מsockjs.tornado SockJSRouter יבוא, SockJSConnection
EchoConnection כיתה (SockJSConnection):
& Nbsp; def on_message (עצמי, msg):
& Nbsp; self.send (msg)
אם __name__ == '__main__':
& Nbsp; EchoRouter = SockJSRouter (EchoConnection, '/ הד')
& Nbsp; = web.Application (EchoRouter.urls)
& Nbsp; app.listen (9999)
& Nbsp;. Ioloop.IOLoop.instance () להתחיל ()
(שים מסתכלים דוגמאות לגרסה מלאה).
הירשם לרשימת התפוצה SockJS לדיונים ותמיכה.
API SockJS-טורנדו
SockJS מספק API שונה במקצת מ_tornado.websocket_. הבדלים עיקריים הם:
- בהתאם לתחבורה, חיבור הלקוח בפועל עשוי או עשוי שלא להיות שם. אז, אין _self.request_ ומאפייני _tornado.web.RequestHandler_ אחרים.
- שינה _open_ שם התקשרות ל_on_open_ להיות עקבי יותר עם callbacks אחר.
- במקום _write_message_, כל ההודעות שנשלחו באמצעות _send_ שיטה. רק במקרה, _send_ ב_tornado.web.RequestHandler_ שולח נתונים גולמיים מעל החיבור, ללא קידוד זה.
- יש פונקצית _broadcast_ שימושית, המקבלת רשימה (או איטרטור) של לקוחות והודעה לשלוח.
הגדרות
אתה יכול לעבור את הגדרות שונות ל_SockJSRouter_, במילון:
MyRouter = SockJSRouter (MyConnection, '/ שלי', dict (= disabled_transports ['WebSocket']))
פריסה
sockjs-טורנדו עובד כראוי מאחורי haproxy ומומלץ גישת פריסה.
ניתן למצוא את קובץ תצורת מדגם כאן.
אם היומן שלך מלא של "אזהרה: חיבור נסגר על ידי הלקוח", עובר _no_keep_alive_ כ_True_ לבנאי _HTTPServer_:
HTTPServer (אפליקציה, no_keep_alive = True) .listen (יציאה)
או:
app.listen (נמל, no_keep_alive = True)
מה חדש בהודעה זו:
- תמיכה נוסף עבור ספריית simplejson מבוגרת גרסאות
- תסריט התקנה קבוע
דרישות :
- Python
תגובות לא נמצא