Xamarin + SignalR(可以发送,但不能接收消息)
Xamarin + SignalR (sending is possible, but not receiving messages)
我可以发消息
但是我的 OnReceiveMessage 事件没有触发?
服务器端
public void Send(string name, string message, string roomname)
{
//All connected clients in a specified group
Clients.Group(roomname).OnMessageReceived(name, message);
}
Xamarin,我的聊天服务
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 代码
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
}
我必须在我的 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);
});
}
我可以发消息 但是我的 OnReceiveMessage 事件没有触发?
服务器端
public void Send(string name, string message, string roomname)
{
//All connected clients in a specified group
Clients.Group(roomname).OnMessageReceived(name, message);
}
Xamarin,我的聊天服务
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 代码
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
}
我必须在我的 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);
});
}