Je travaille sur SignalR (v2.2.0) chat avec le client IOS en utilisant SwiftR. Tout fonctionne très bien client IOS ainsi que client Web (Asp.net) est capable de faire le chat en utilisant:SignalR (v2.2.0) Client.Group() ne fonctionne pas pour le client IOS
Client:
var chatHub = $.connection.chatHub;
$("#btnStartChat").click(function() {
var name = $("#txtNickName").val();//UserName
var userId = $("#txtUserId").val();
var room = $("#txtRoomId").val();
if (name.length > 0) {
chatHub.server.joinRoom(userId, room, name).done(function() {
chatHub.server.connect(userId, room, name);
});
}
else {
alert("Please enter name");
}
});
chatHub.client.messageReceived = function (userName, message) {
AddMessage(userName, message);
$("#istyping").html('');
};
function AddMessage(userName, message) {
$('#divChatWindow').append('<div class="message"><span class="userName">' + userName + '</span>: ' + message + '</div>');
var height = $('#divChatWindow')[0].scrollHeight;
$('#divChatWindow').scrollTop(height);
}
// On New User Connected
chatHub.client.onNewUserConnected = function (id, name) {
// alert('first time add');
AddUser(chatHub, id, name);
};
Serveur:
public async Task JoinRoom(string user_Id, string room_Id, string user_Name)
{
//Add user in database for room
AddLoginUser(room_Id, this.Context.ConnectionId, user_Id);
await this.Groups.Add(this.Context.ConnectionId, room_Id);
}
public void Connect(string user_Id, string room_Id, string user_Name)
{
var id = Context.ConnectionId;
Clients.Caller.onConnected(id, user_Name, GetRoomUser(room_Id), GetRoomMessage(room_Id));
// send to all in group to update user list
Clients.OthersInGroup(room_Id).onNewUserConnected(id, user_Name);
}
public void SendMessageToAll(string user_Name, string message, string room_Id, string user_Id)
{
// store messages in db
// SaveRoomMessage(user_Id, message, room_Id);
// Broad cast message
Clients.All.messageReceived(user_Name, message);
//Clients.Group(room_Id).messageReceived(user_Name, message);
}
Problème:
Dans la méthode ci-dessus si am changer le
Clients.All.messageReceived(user_Name, message);
à
Clients.Group(room_Id).messageReceived(user_Name, message);
IOS client ne peut pas recevoir un message même client IOS est capable d'envoyer un message au client Web. Ici, les clients Web peuvent envoyer et recevoir des messages entre eux sans aucun problème.
J'ai beaucoup cherché à ce sujet sur le web, mais je n'ai pas trouvé d'informations à ce sujet. Si vous avez encore besoin de plus d'informations alors s'il vous plaît laissez-moi savoir que je vais essayer de fournir le plus possible.
Merci d'avance.
Où ajoutez-vous vos clients aux groupes? Quelque chose comme 'attend this.Groups.Add (this.Context.ConnectionId, room_Id);' –