내가 첫째로 나는 그것의 모든 데이터가 GroupTable에 삽입 할 줘야 해 그룹을 생성하고, GroupChat에 사용되는 세 개의 테이블, 다음 groupCreation의 성공에 내가있는 것 insertConnectionId 함수를 호출하고이 아래 MapGroupConnectionId 백엔드에서 SignalR 연결 ID를 생성하고 groupId 및 groupCreaterId를 사용하여 GroupTable에 삽입하십시오. 해당 작업 벌금 및 친구 ID로 구성된 그룹 친구 테이블이 있습니다. 이제 어떤 친구가 특정 그룹에 메시지를 보내면 필요합니다. SignalR을 통해 특정 그룹에있는 모든 사람들에게 메시지를 보냅니다. 그룹 테이블의 groupConnectionID를 해당 그룹과 관련된 모든 회원에게 할당하면 Gr이 수신 할 특정 그룹으로 메시지를 보낼 수 있습니다. 내가 잘못된 방법으로 그 일을하고있는 경우 oupFriends, 다른 기능 만 Hub.Client.ALL에 대한 아니라 작품 내 허브, 나를 인도 해주십시오, 나는 새가 signalR그룹 채팅 신호 R
//Group Table
groupID groupName groupImage groupCreaterId groupConnectionId groupsignalrIsConnected
1 dude someurl 421 somestringID TRUE
2 god someurl 444 somestringID TRUE
3 heaven someurl 543 Null FALSE
4 hell someurl 678 Null FALSE
//Group Friends Table
groupFriendsTabID groupId groupFriendsId
111 2 444
112 3 678
113 2 421
114 4 444
115 1 543
116 4 421
117 1 678
118 2 543
119 3 444
//Group Message Table
groupMesTabId groupId groupsenderId groupMessage
22 1 543 hello
23 3 678 hi
//My HUB
[HubName("groupChatHub")]
public class GroupChatHub : Hub
{
GroupRepository group= new GroupRepository();
public void **MapGroupConnectionId**(long groupID,int groupCreatorId)
{
if (groupID != 0 && groupCreatorId!=0)
{
CBG.MapGroupConnectionId(groupID, Context.ConnectionId);
Clients.Client(Context.ConnectionId).configureUserSettings();}
}
public override Task OnConnected()
{
var connectionId = Context.ConnectionId;
return base.OnConnected();
}
public override Task OnDisconnected(bool stopCalled)
{
var connectionId = Context.ConnectionId;
return base.OnDisconnected(stopCalled);
}
public override Task OnReconnected()
{
return base.OnReconnected();
}
}
//My WEBAPI//
public class GroupController : ApiControllerWithHub<GroupchatHub>
{
public IhttpActionResult InsertNewMessage(messageModel model)
{
//Here i am inserting new message to Database using some function it works fine//
after success of inserting message i need to send that message to groupmembers using signalr
//here i am fetching the connectionID through groupID from group table
var connectionID=repository.getConnection(model.groupID)
var messager = "11";
Hub.Clients.All.getGroupChat(messager); // this works
Hub.Clients.clients(connectionID).getGroupChat(messager);this not working it except IList<string>
Hub.Clients.Groups(groupName,ConnectionID).getGroupChat(messager); this is not working
}
return ok(Model);
}
//MyClientEnd//
var Grouphub
//this insertConnectionId is called once the group is created on the success of group creation and SignalRconnectionstring is inserted in GroupTable
function insertConnectionId(groupId,groupCreatorID)
$.connection.hub.start().done(function() {
console.log('Now connected, connection ID=' + $.connection.hub.id);
console.log("Connected, transport = " + $.connection.hub.transport.name);
Grouphub.server.mapGroupConnectionId(groupID, groupCreatorID);
});
$.connection.hub.error(function (error) {
console.log('SignalR error: ' + error)
});
});
Grouphub = $.connection.groupChatHub
Grouphub.client.getGroupChat = function (data) {
alert("in");
}
@thanks를 :) 도움이 예제를 다른 분야에서 그것을 사용, 난 그냥, 내가 사용한 방법을 알고 싶어 사용자가 signalr 연결 문자열을 바인드하여 Database에 저장합니다. 위의 코드, 그것을 달성하는 좋은 방법 또는 더 나은 방법이 있다면 알려주 – Nikil