0

我正在尝试 SignalR。

我开始使用一种方法制作集线器Echo。集线器在连接时以及从 Echo 方法调用客户端上“回显”的方法。客户端会看到在 OnConnected 中发生的对“回声”的第一次调用,但看不到它调用自己的来自 Echo 的调用。我怀疑原因是在服务器上,集线器在两个不同的应用程序域中实例化了两个调用。

--- 更新: --- 通过在 IIS 管理器中(在应用程序池/我的应用程序池/高级设置下)将“最大工作进程”设置为 1,应用程序被强制在单个 AppDomain 中,并且回调回显有效。有没有办法让它与多个工作进程一起工作?

   public override System.Threading.Tasks.Task OnConnected()
    {
        Log.WriteLine("SIGNALR CONNECTED: " + Context.ConnectionId);
        Clients.All.Echoed("now connected: "+Context.ConnectionId);
        return base.OnConnected();
    }

    public void Echo(string data)
    {
        Log.WriteLine("SIGNALR ECHO: " + data);
        Clients.All.Echoed(data);
    }

客户端是 .NET(Xamarin),它尝试向自己发送一条回显消息:

   try{
        System.Net.ServicePointManager.DefaultConnectionLimit = 10;

        HubConnection hubConnect = new HubConnection ("http://localhost:1234/signalr");
        hubConnect.Closed+=()=> Console.WriteLine("CLOSED");
        hubConnect.Error+=(e)=>Console.WriteLine("ERROR: "+e);
        hubConnect.Received+=(s)=>Console.WriteLine("RECEIVED: "+s); 
        hubConnect.Reconnected+=()=>Console.WriteLine("Reconnected"); 

        IHubProxy ordersHubProxy = hubConnect.CreateHubProxy ("OrdersHub"); 
        ordersHubProxy.On<string> ("Echoed", (echo) =>{
            Console.WriteLine ("ECHOED: " + echo );
        });
        hubConnect.Start().Wait();
        Console.WriteLine("CONNECTED: "+hubConnect.Transport.Name);
        ordersHubProxy.Invoke("echo", "callback");
    } catch (Exception x){
        Console.WriteLine ("Unable to connect to SignalR: " + x);
    };

在客户端,我看到一个带有“现在连接:xyzguid”消息的“回显”事件,但我没有看到“回调”消息。在服务器端,连接和回声都有记录的事件,但回声没有到达要求它的客户端:

服务器日志:

LOG AppDomain: /LM/W3SVC/2/ROOT/MyApp-11-130157367321605301 Thread: 35  
SIGNALR CONNECTED: 8ab4ef99-a41a-4e33-9aba-086a80e2e4a2
LOG AppDomain: /LM/W3SVC/2/ROOT/MyApp-11-130157367360449370 Thread: 1
SIGNALR ECHO: callback

客户端日志:

CONNECTED: serverSentEvents
ECHOED: now connected: 5cde92f8-9719-4963-b64f-a8bbe39a72ac
RECEIVED: {
  "H": "MyHub",
  "M": "Echoed",
  "A": [
    "now connected: 5cde92f8-9719-4963-b64f-a8bbe39a72ac"
  ]

我也希望看到这个,但它没有出现:

ECHOED: callback
RECEIVED: ...
4

0 回答 0