2013-06-17 5 views
6

Was sind meine Optionen für die Integration von Python mit SignalR?Verwendung von SignalR-Server aus Python-Code

Der Python-Code ist ein Teil eines großen 3rd-Party-Produkts, keine Frage der Sprachpräferenz. Der SignalR Server bietet Abonnements für bestehende .NET Produkte.

Wir möchten .NET SignalR Server mit Python wiederverwenden.

+4

Was ist der Grund für die Abwärts-Voting? Wie kann ich meine Frage verbessern, die ein tatsächliches Arbeitsproblem beschreibt? – Den

Antwort

1

Ich denke an ein paar Möglichkeiten, und sie sind alle theoretischen (und wahrscheinlich schlechte Ideen zu beginnen):

  • IPC - die Python-App hosten und die signalr App als unterschiedliche Prozesse und irgendwie zurück Rohr Informationen und her mit einer Art von IPC-Mechanismus (Named Pipes, TCP, etwas anderes).
  • Verwenden Sie IronPython (was wahrscheinlich nicht wirklich eine Option ist).
  • Port eine leichte Version von SignalR zu Python (https://github.com/davidfowl/SignalR.Lite). Wahrscheinlich funktioniert das nicht auf die gleiche Weise, aber vielleicht brauchen Sie nicht alle Funktionen.

Oder Sie können hoffen, eine Bibliothek in Python zu finden, die etwas Ähnliches tut.

3

Es gibt einen SignalR Client auf dem Python-Paket-Index "signalr-client" genannt, die einige grundlegende SignalR Funktionalität Source

Es ist kompatibel mit Python v2 und v3 unterstützt.

Funktionalität unterstützt beinhaltet:

  • zu SignalR Hub anschließen
  • Hervorrufen SignalR Methode
  • Ereignishandler SignalR Benachrichtigungen

Es erfordert die folgenden Module installiert über pip zu verarbeiten:

  • GEVENT
  • sseclient
  • websocket-Client

Verwendungsbeispiel gemäß Link:

#create a connection 
connection = Connection(url, session) 

#start a connection 
connection.start() 

#add a handler to process notifications to the connection 
connection.handlers += lambda data: print 'Connection: new notification.', data 

#get chat hub 
chat_hub = connection.hub('chat') 

#create new chat message handler 
def message_received(message): 
    print 'Hub: New message.', message 

#receive new chat messages from the hub 
chat_hub.client.on('message_received', message_received) 

#send a new message to the hub 
chat_hub.server.invoke('send_message', 'Hello!') 

#do not receive new messages 
chat_hub.client.off('message_received', message_received) 

#close the connection 
connection.close() 
+0

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. – FallenAngel

+1

Nun, Sie müssen die Bibliothek von diesem Link herunterladen, so ist der Link im Wesentlichen die Antwort, nicht genug Platz zu beschreiben, wie ein Python SignalR-Client im verfügbaren Raum für Antworten –

+0

schreiben Dies könnte ein Befehl sein, oder Sie können hinzufügen Wesentliche Teile der Antwort wie die * einige grundlegende signalR Funktionalitäten * werden unterstützt und es wird eine Antwort. – FallenAngel

Verwandte Themen