2017-07-17 16 views
1

私はメッセージ を送信できますが、私のOnReceiveMessageイベントはトリガーしませんか?Xamarin + SignalR(送信は可能ですが、メッセージを受信して​​いません)

サーバー側

public void Send(string name, string message, string roomname) 
{ 
    //All connected clients in a specified group 
    Clients.Group(roomname).OnMessageReceived(name, message); 
} 

Xamarin、chatpage

public ChatViewModel(List<MessageViewModel> messages) 
{ 
    Messages = new ObservableCollection<MessageViewModel>(messages); 
    _chatServices = DependencyService.Get<IChatServices>(); 
    _Channel = "PrivateRoom"; 
    _chatServices.Connect(); 
    _chatServices.JoinRoom(_Channel); 
    _chatServices.OnMessageReceived += _chatServices_OnMessageReceived; 
} 
private void _chatServices_OnMessageReceived(object sender, ChatMessage e) 
{ 
    // NO TRIGGER 
} 
+0

サーバが(部屋だけでなく)すべてのクライアントにそれをプッシュすると、クライアントでOnMessageReceivedが呼び出されますか? –

+1

@AndrewTaveraは、それを可能にする必要がありました。 – Eli

答えて

0

から後ろの私のchatservice

public event EventHandler<ChatMessage> OnMessageReceived; 

public async Task Connect() 
{ 
    await _connection.Start(); 
    _proxy.On("OnMessageReceived", (string name, string message) => OnMessageReceived(this, new ChatMessage 
    { 
     Name = name, 
     Message = message 
    })); 
} 

Xamarinコード私は自分のWebアプリケーションのCORSを有効にする必要がありました。

1)「Microsoft.Owin.Cors」パッケージをインストールします。

2)signalRをマッピングし、CORSを使用できるようにします。

public void Configuration(IAppBuilder app) 
    {   
     app.Map("/signalR", map => 
     { 
      map.UseCors(CorsOptions.AllowAll); 
      var hubConfiguration = new HubConfiguration { }; 
      map.RunSignalR(hubConfiguration); 
     }); 
    } 
関連する問題