Using SignalR server from Python code

倖福魔咒の 提交于 2019-12-08 15:05:30

问题


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.


回答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.




回答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()


来源:https://stackoverflow.com/questions/17148408/using-signalr-server-from-python-code

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!