我正在使用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客户端能够将消息发送到Web客户端,IOS客户端也无法接收消息。Web客户端可以在彼此之间发送和接收消息而不会出现任何问题。
我在网上对此进行了很多搜索,但没有找到合适的答案。如果仍然需要更多信息,请让我知道,我将尽力提供。
提前致谢。
您是否正在执行类似操作以将客户添加到组中?
服务器 :
public async Task JoinRoom(string room_id)
{
await this.Groups.Add(this.Context.ConnectionId, room_id);
}
public async Task UnJoinRoom(string room_id)
{
await this.Groups.Remove(this.Context.ConnectionId, room_id);
}
客户 :
js:
var chatHub = $.connection.chatHub;
chatHub.server.joinRoom('roomId')
迅速:
chatHub.invoke("joinRoom", arguments: ["room_id"])
之后,如果你打电话
Clients.Group('room_Id').messageReceived(user_Name, message);
它应该工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句