Using SignalR server from Python code

14,917

Solution 1

I can think of a few ways and they are all theoretical (and probably bad ideas to begin with):

  • IPC - host the python app and the signalr app as different processes and somehow pipe information back and forth using some kind of ipc mechanism (named pipes, tcp, something else).
  • Use IronPython (which probably isn't really an option).
  • Port a lightweight verison of SignalR to python (https://github.com/davidfowl/SignalR.Lite). Probably won't work the same way but maybe you don't need all the features.

Or you can hope to find a library in python that does something similar.

Solution 2

There is a SignalR client available on the python package index named "signalr-client" which supports some basic SignalR functionality Source

It is compatible with Python v2 and v3.

Functionality supported includes:

  • Connecting to SignalR Hub
  • Invoking SignalR Method
  • Event handler to process SignalR Notifications

It requires the following modules installed via pip:

  • gevent
  • sseclient
  • websocket-client

Sample usage as per 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()
Share:
14,917

Related videos on Youtube

Den
Author by

Den

_

Updated on June 04, 2022

Comments

  • Den
    Den almost 2 years

    What are my options for integrating Python with SignalR?

    The Python code is a part of large 3rd party product, not a matter of language preference. SignalR server provides subscriptions to existing .NET products.

    We would like to reuse .NET SignalR server with Python.

    • Den
      Den almost 11 years
      What is the reason for down-voting? How can I improve my question that describes an actual real-world work programming problem?
  • Malcolm McCaffery
    Malcolm McCaffery over 8 years
    Well you need to download the library from this link, so the link essentially is the answer, not enough space to describe how to write an Python SignalR client in the available space for answers
  • HEADLESS_0NE
    HEADLESS_0NE about 8 years
    Update: signalr-client v0.0.6 is compatible with Python 2 and 3.
  • Ytsen de Boer
    Ytsen de Boer over 3 years
    signalr-python project seems dead to me. Try signalrcore on PyPi.