【发布时间】:2016-07-03 21:35:30
【问题描述】:
我正在使用 SwiftR 与 IOS 客户端进行 SignalR(v2.2.0) 聊天。一切正常 IOS 客户端以及 Web 客户端(Asp.net)能够使用以下方式进行聊天:
客户:
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);
};
服务器:
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);
}
问题:
如果要改变上述方法
Clients.All.messageReceived(user_Name, message);
到
Clients.Group(room_Id).messageReceived(user_Name, message);
IOS 客户端无法接收消息,即使 IOS 客户端能够向 Web 客户端发送消息。在这里,Web 客户端可以毫无问题地相互发送和接收消息。
我在网上对此进行了很多搜索,但没有找到任何适当的答案。如果还需要更多信息,请告诉我,我会尽量提供。
提前致谢。
【问题讨论】:
-
您在哪里将您的客户添加到群组中?类似
await this.Groups.Add(this.Context.ConnectionId, room_Id);
标签: c# ios asp.net swift signalr