我按照https://github.com/SignalR/SignalR/wiki/Hubs的说明进行了操作, 题为"从集线器外部广播到集线器".
我在同一个项目中的MVC Action中使用了这个方法.请求操作将更新发送到已连接的客户端.
我的问题是我需要能够从另一个项目,特别是WCF Web服务项目发送更新.我的应用程序有一个API和一个Web组件,当API用户进行改变调用的调用时,需要通过SignalR将这些更新推送到Web客户端.使用与我的测试操作相同的代码调用Web服务不起作用.
我也在nunit单元测试中尝试了相同的代码,但也没有用.
我需要做些什么才能使Wiki上描述的相同方法适用于WCF项目?
最简单的解决方案可能是在您的Web应用程序(使用MVC或新的WebAPI)上提供一个API,该API将广播到所有连接的客户端.任何其他应用程序(NT服务,NUnit测试......)如果想要向客户端发送消息,则可以调用该API.
如果您没有在IIS下运行的Web应用程序或直接托管它的其他应用程序中托管Hub,则不能指望SignalR可以执行任何操作.
如果您需要从单独的应用程序到客户端进行双向通信,那么只需将您的应用程序转换为SignalR客户端,并让它通过Web应用程序托管的SignalR与客户端进行通信,并让它同时收听来自客户端的消息.
例如,以下是我如何配置复杂的Service + WebSite + Clients解决方案(暂时忽略紫色):

Live Web Server允许NT服务连接和创建SignalR组.NT服务发送给这些组.Web浏览器连接到组并接收发送到该组的消息.实际上,中间的盒子变成了pubsubhub.