当远程输入服务操作时,SignalR不会广播

时间:2015-12-15 13:42:03

标签: signalr

我的网络api odata服务中有一个Action条目。它工作正常。到达的任何消息都会记录到磁盘,所以我知道消息到达那里。如果我从网络上任何位置的客户端应用程序调用此操作,则会将消息记录到磁盘并使用SignalR将消息广播到我的侦听javascript客户端。这一切都很完美。

如果我使用相同的客户端应用程序调用相同的Action条目,但是来自不同的网络,那么消息STILL就可以了。消息及其所有数据都记录到磁盘文件中。但是,SignalR不会广播消息。在使用SignalR进行广播之前,我已将消息数据写入我的日志文件中,因此我知道我有有效的数据要广播。这是我的行动切入点。同样,这段代码没有任何问题,因为我每次都收到这条消息。

    [HttpPost]
    [ODataRoute("MyResponse()")]
    public IHttpActionResult MyResponse(ODataActionParameters parameters)
    {
        IHttpActionResult retVal = null;
        BridgeResponse bridgeResponse = null;

        try
        {
            if (parameters != null)
            {
                bridgeResponse = (BridgeResponse)parameters["bridgeResponse"];
                if (bridgeResponse != null)
                {

我有一个启动文件,我在那里进行初始化:

[assembly: OwinStartup(typeof(XXXXX.Startup))]
namespace XXXXX
{
    public partial class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.MapSignalR("/Beacon", new HubConfiguration());
        }
    }
}

这是我的中心。

[HubName("Beacon")]
public class Beacon : Hub
{
    private static IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<Beacon>();

    public static void SendMessageToHub(string data, String To)
    {
        hubContext.Clients.All.displayData(data);
    }
}

也不多。我的javascript客户端具有“displayData”方法,其中显示数据。同样,如果我从网络中的任何地方调用我的动作,这一切都可以完美地运行。如果我从不同的网络呼叫动作,除了SignalR广播外,一切都有效。

这个已经困扰了我几天了。任何帮助表示赞赏。

0 个答案:

没有答案