17

将 Python 与 SignalR 集成有哪些选择?

Python 代码是大型 3rd 方产品的一部分,与语言偏好无关。SignalR 服务器提供对现有 .NET 产品的订阅。

我们想用 Python 重用 .NET SignalR 服务器。

4

2 回答 2

9

在名为“signalr-client”的 python 包索引上有一个可用的 SignalR 客户端,它支持一些基本的 SignalR 功能Source

它与 Python v2 和 v3 兼容。

支持的功能包括:

  • 连接到 SignalR 集线器
  • 调用 SignalR 方法
  • 处理 SignalR 通知的事件处理程序

它需要通过 pip 安装以下模块:

  • 事件
  • 客户端
  • websocket客户端

根据链接的示例用法:

#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()
于 2015-11-03T22:14:28.600 回答
2

我可以想到几种方法,它们都是理论上的(一开始可能是坏主意):

  • IPC - 将 python 应用程序和 signalr 应用程序托管为不同的进程,并以某种方式使用某种 ipc 机制(命名管道、tcp 等)来回传递信息。
  • 使用 IronPython(这可能不是一个真正的选择)。
  • 将 SignalR 的轻量级版本移植到 python ( https://github.com/davidfowl/SignalR.Lite )。可能不会以相同的方式工作,但也许您不需要所有功能。

或者你可以希望在 python 中找到一个类似的库。

于 2013-12-20T06:40:22.440 回答